从yii2中的特定视图中排除Js(vendor core.Js)文件



我想在mySpecial视图文件中删除vendor-core.js。我已将其包含在AppAsset.php中。但我不需要它在特定的页面,因为它会引起一些严重的问题。

我需要删除特定视图文件中的vendor-core.js。其他Js文件将按原样加载。

大多数视图都需要vendor-core.js。但很少有重要的观点,我不想把它包括在内。

任何帮助都将不胜感激。

提前谢谢。。

这是我的AppAsset代码

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

/**
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class AppAsset extends AssetBundle {
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        //  'css/site.css',
        'css/vendor.min.css',
        'css/theme-core.min.css',
        'css/module-essentials.min.css',
        'css/module-layout.min.css',
        'css/module-sidebar.min.css',
        'css/module-sidebar-skins.min.css',
        'css/module-navbar.min.css',
        'css/module-media.min.css',
        'css/module-timeline.css',
        'css/module-chat.min.css',
        'css/module-charts.min.css',
        'css/module-maps.min.css',
        'css/jquery-ui-timepicker-addon.css',
        'css/custom.css',
    ];
    public $js = [
      'js/vendor-core.js',
        'js/vendor-tables.min.js',
    //    'js/vendor-forms.min.js',
        'js/vendor-media.min.js',
        'js/vendor-charts-all.min.js',
        'js/vendor-maps.min.js',
        'js/vendor-tree.min.js',
        'js/vendor-nestable.min.js',
  //      'js/module-essentials.min.js',
   //     'js/module-layout.min.js',
        'js/module-sidebar.min.js',
        'js/module-media.min.js',
        'js/module-chat.min.js',
        'tinymce/js/tinymce/tinymce.min.js',
        'js/jquery-ui-sliderAccess.js',
    ];
    public $depends = [
        'yiiwebYiiAsset',
        'yiiwebJqueryAsset',
        'yiibootstrapBootstrapAsset',
    ];
//public $jsOptions =[
//    'position' => yiiwebView::POS_READY
//];
}

您可以在AppAsset中使用Init函数并根据控制器id和/或动作id 在条件下推送css或js

public function init()
{  
    if(Yii::$app->controller->id == 'controllerid')
    {

        array_push($this->css,'css-path/file.css');
        array_push($this->js,  'js-path/file.js');
    }
}

为了方便起见,您可以从js数组中取消设置相同的函数,而不是插入上面的函数,并且它不会在特定的操作中加载

if(($key = array_search('js-path/file.js', $this->js)) !== false) {
                    unset($this->js[$key]);
   }

最新更新