【问题标题】:How can I add conditions to yii2 depends in AppAsset class?如何在 AppAsset 类中添加条件到 yii2 依赖?
【发布时间】:2015-07-05 16:54:56
【问题描述】:

Yii2 的 AppAsset 类中有一些依赖:

public $depends = [
    'yii\web\YiiAsset',
    'yii\bootstrap\BootstrapAsset'
];

有没有什么方法可以为此添加条件,就像我使用 css 和 js 一样?

public $jsOptions = ['condition' => 'lt IE 7']; 

或者,你知道另一种向 bootstrap 和 yii JS 和 CSS 文件添加条件的方法吗?
谢谢

UPD:我已添加到 config/web.php:

'components' => [
'assetManager' => [
    'bundles' => [
        'yii\web\YiiAsset' => [
            'jsOptions' => ['condition' => 'lt IE 7'],
        ],
        'yii\bootstrap\BootstrapAsset' => [
            'jsOptions' => ['condition' => 'lt IE 7'],
        ],
    ],
],

但是,我有这个(正如@arogachev 建议的那样):

<script src="/assets/8fd244c6/jquery.js"></script>
<!--[if lt IE 7]>
<script src="/assets/bd48c465/yii.js"></script>
<![endif]-->
<script src="/assets/bd48c465/yii.gridView.js"></script>
<script src="/assets/db9cb9aa/js/bootstrap.js"></script>

UPD2:回答

'yii\web\YiiAsset' => [
            'cssOptions'    => ['condition' => 'gt IE 7]>'],
            'jsOptions'     => ['condition' => 'gt IE 7]>'],
        ],
        'yii\bootstrap\BootstrapAsset' => [
            'cssOptions'    => ['condition' => 'gt IE 7]>'],
        ],
        'yii\bootstrap\BootstrapPluginAsset' => [
            'jsOptions'     => ['condition' => 'gt IE 7]>'],
        ],
        'yii\web\JqueryAsset' => [
            'jsOptions'     => ['condition' => 'gt IE 7]>'],
            'cssOptions'    => ['condition' => 'gt IE 7]>'],
        ],

【问题讨论】:

    标签: php twitter-bootstrap yii yii2


    【解决方案1】:

    您可以像这样通过应用程序配置自定义供应商捆绑包:

    return [
        // ...
        'components' => [
            'assetManager' => [
                'bundles' => [
                    'yii\web\YiiAsset' => [
                        'jsOptions' => ['condition' => 'lt IE 7'],
                    ],
                    'yii\bootstrap\BootstrapAsset' => [
                        'jsOptions' => ['condition' => 'lt IE 7'],
                    ],
                ],
            ],
        ],
    ];
    

    或者在运行时通过assetManager:

    use Yii;
    
    ...
    
    Yii::$app->assetManager->bundles['yii\web\YiiAsset']->jsOptions = ['condition' => 'lt IE 7'];
    
    Yii::$app->assetManager->bundles['yii\bootstrap\BootstrapAsset']->jsOptions = ['condition' => 'lt IE 7'];
    

    官方文档:

    【讨论】:

    • 我已将您的代码添加到组件中,但仅将条件添加到 yii.js 资产中。 Bootstrap 和 Jquery 没有任何条件(
    • 显示您如何添加它,您可以使用该信息更新初始问题。
    • 但我不明白为这些资产包添加此类 cmets 的原因是什么。
    猜你喜欢
    • 2016-11-11
    • 2018-10-01
    • 2017-01-28
    • 1970-01-01
    • 2016-02-24
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    相关资源
    最近更新 更多