如何向 yii2 添加条件取决于 AppAsset class?
How can I add conditions to yii2 depends in AppAsset class?
Yii2 中的 AppAsset class 有一些依赖:
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]>'],
],
您可以像这样通过应用程序配置自定义供应商捆绑包:
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'];
官方文档:
Yii2 中的 AppAsset class 有一些依赖:
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]>'],
],
您可以像这样通过应用程序配置自定义供应商捆绑包:
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'];
官方文档: