Yii2 Yii 2-有条件资产?

Yii2 Yii 2-有条件资产?,yii2,Yii2,我们希望加载以下内容: <!--[if !IE]> <link rel="stylesheet" type="text/css" href="/css/good-browsers.css" /> <![endif]--> 但是,在本例中,它们都与“yii\web\YiiAsset”相关。如何有条件地加载它们?您应该能够通过创建两个资产捆绑包而不是一个资产捆绑包,然后使用IE捆绑包上的$cssOptions属性,并使其依赖于您的通

我们希望加载以下内容:

   <!--[if !IE]>
        <link rel="stylesheet" type="text/css" href="/css/good-browsers.css" />
    <![endif]-->

但是,在本例中,它们都与“yii\web\YiiAsset”相关。如何有条件地加载它们?

您应该能够通过创建两个资产捆绑包而不是一个资产捆绑包,然后使用IE捆绑包上的
$cssOptions
属性,并使其依赖于您的通用捆绑包:

<?php

namespace frontend\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';

    public $baseUrl = '@web';

    public $css = [
        'css/site.css',
    ];

    public $js = [
        'js/site.js',
    ];

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

喋喋不休
编辑


我看到您正试图以相反的方式进行操作-操作应该非常简单,因为您所要做的就是更改IE资产的名称(以避免引起混淆)并更改条件。

可能的重复项。也就是说,Yii2不应该忽略您的布局-您确定没有缓存和/或正在加载其他布局吗?你检查过源代码以确保它被输出了吗?我没有阅读不同的布局。现在,我已经多次“硬重置”缓存了——但是,我想条件选项会起作用。谢谢。这不应该关闭。我想链接的答案没有回答这个问题。我将重新表述这个问题。@H2Ooooo请查看这个问题的更新。您的链接解决方案似乎不适用于此情况。您是否多次包含同一资产?为什么?也就是说,
AssetBundle->jsOptions
yii2\web\AssetBundle
类上的公共属性,因此您只需在应用程序资产中设置它即可。应该没有理由使用配置(而且tbh只是让它看起来更混乱,因为您正在将内容从实际发生的地方移开)
<?php

namespace frontend\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';

    public $baseUrl = '@web';

    public $css = [
        'css/site.css',
    ];

    public $js = [
        'js/site.js',
    ];

    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
        '\yii\web\JqueryAsset',
    ];
}
<?php

namespace frontend\assets;

use yii\web\AssetBundle;

class AppIeAsset extends AssetBundle
{
    public $basePath = '@webroot';

    public $baseUrl = '@web';

    public $css = [
        'css/site_ie.css',
    ];

    public $js = [
        'js/site_ie.js',
    ];

    public $cssOptions = [
        'condition' => 'IE',
    ];

    public $depends = [
        '\frontend\assets\AppAsset', // Depend on the regular app bundle
    ];
}
<?php
/**
 * @var yii\web\View $this
 */

AppIeAsset::register($this);

?>

blablabla