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

时间:2016-04-29 13:04:05

标签: yii yii2 yii-extensions yii2-advanced-app yii-components

我想在myParticular视图文件中删除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 frontend\assets;

use yii\web\AssetBundle;


/**
 * @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 = [
        'yii\web\YiiAsset',
        'yii\web\JqueryAsset',
        'yii\bootstrap\BootstrapAsset',

    ];

//public $jsOptions =[
//    'position' => \yii\web\View::POS_READY
//];

}

1 个答案:

答案 0 :(得分:1)

您可以在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]);
   }
相关问题