Yii2 - Include JS Script Only For Specific View

2019-04-21 00:50发布

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?

标签: yii2
3条回答
唯我独甜
2楼-- · 2019-04-21 01:02

@soju is right. But you also can create specific asset bundles for use specific views. Your specific js files can be a file group on this situation you can use asset bundles and can use any views which you want.

查看更多
等我变得足够好
3楼-- · 2019-04-21 01:06

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 <qiang.xue@gmail.com>
 * @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

查看更多
The star\"
4楼-- · 2019-04-21 01:08

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

查看更多
登录 后发表回答