Yii2 - 仅包含特定视图的JS脚本

时间:2015-02-28 12:01:59

标签: yii2

我希望将js脚本specific.js包含在具有操作ID specific-action-id的特定视图中。我不希望specific.js包含在每个页面中。

为了包含整个网站的js脚本,我通常需要编辑AppAsset.php。为此,我该怎么办?

3 个答案:

答案 0 :(得分:16)

您只需在视图中注册此js文件,例如:

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

了解详情:http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html#registering-scripts

答案 1 :(得分:4)

强烈建议使用资产包来注册外部JS文件而不是registerJsFile(),因为它们可以提供更好的灵活性和更精细的依赖配置。此外,使用资产包允许您组合和压缩多个JS文件,这对于高流量网站来说是理想的。

因此,您可以创建一个新的AppAsset文件,并将您的css和javascript文件放入其中。

创建资产包

在\ assets目录中,我们创建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',
        ];
}

在您的视图文件中

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

资源 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

答案 2 :(得分:1)

@soju是对的。但您也可以创建特定资产包以使用特定视图。在这种情况下,您的特定js文件可以是文件组,您可以使用资产包,并可以使用您想要的任何视图。