Yii2-仅针对特定视图包含JS脚本
我想包含我的js脚本Yii2-仅针对特定视图包含JS脚本,yii2,Yii2,我想包含我的js脚本specific.js,用于具有操作id的特定视图特定操作id。我不希望每个页面都包含specific.js 为了在整个站点中包含js脚本,我通常必须编辑AppAsset.php。为此,我应该怎么做?您只需在视图中注册此js文件,例如: $this->registerJsFile('@web/js/specific.js'); 阅读更多信息:@soju是对的。但您也可以为特定视图创建特定的资产包。您的特定js文件可以是一个文件组。在这种情况下,您可以使用资产捆绑包,也
specific.js
,用于具有操作id的特定视图特定操作id
。我不希望每个页面都包含specific.js
为了在整个站点中包含js脚本,我通常必须编辑
AppAsset.php
。为此,我应该怎么做?您只需在视图中注册此js文件,例如:
$this->registerJsFile('@web/js/specific.js');
阅读更多信息:@soju是对的。但您也可以为特定视图创建特定的资产包。您的特定js文件可以是一个文件组。在这种情况下,您可以使用资产捆绑包,也可以使用您想要的任何视图。强烈建议使用资产捆绑包注册外部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',
];
}
资源
这不会添加到特定操作中。。这是一个将js文件添加到视图的通用过程。要根据操作id添加,我们可能需要使用afterAction事件。这不是最好的选择,创建资产包,因为在另一个答案中是首选方法。
use app\assets\StatusAsset;
StatusAsset::register($this);