Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Yii2 - Include JS Script Only For Specific View

Tags:

yii2

I want to include my js script specific.js for a specific view having action id specific-action-id. I don't want the specific.js to be included in every page.

For including a js script for the whole site I normally have to edit AppAsset.php. For this purpose, what should I do?

like image 422
Omar Tariq Avatar asked Feb 28 '15 12:02

Omar Tariq


2 Answers

You should simply register this js file in your view, e.g. :

$this->registerJsFile('@web/js/specific.js');

Read more : http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html#registering-scripts

like image 154
soju Avatar answered Sep 18 '22 18:09

soju


It is highly recommended to use asset bundles to register external JS files rather than registerJsFile() because these allow better flexibility and more granular dependency configuration. Also using asset bundles allows you to combine and compress multiple JS files, which is desirable for high traffic websites.

So you can create a new AppAsset file and put your css and javascript files in it.

Create the Asset Bundle

In the \assets directory, we create StatusAsset.php:

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace app\assets;

use yii\web\AssetBundle;

/**
 * @author Qiang Xue <[email protected]>
 * @since 2.0
 */
class StatusAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [];
    public $js = [
      '/js/jquery.simplyCountable.js',
      '/js/twitter-text.js',
      '/js/twitter_count.js',  
      '/js/status-counter.js',
    ];
    public $depends = [
            'yii\web\YiiAsset',
            'yii\bootstrap\BootstrapAsset',
        ];
}

In your view file

use app\assets\StatusAsset;
StatusAsset::register($this);

Resources http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html https://code.tutsplus.com/tutorials/how-to-program-with-yii2-working-with-asset-bundles--cms-23226

like image 45
Ahmad Samilo Avatar answered Sep 16 '22 18:09

Ahmad Samilo