改变yii2中的JuiAsset主题
Change the JuiAsset theme in yii2
我使用了 yii2-jui 的 datePicker,我想更改使用的 Jquery Ui 主题。
我在 myapp\vendor\yiisoft\yii2-jui\JuiAsset.php
中尝试了硬编码更改
class JuiAsset extends AssetBundle
{
public $sourcePath = '@bower/jquery-ui';
public $js = [
'jquery-ui.js',
];
public $css = [
'themes/THE_OTHER_THEME/jquery-ui.css',
];
public $depends = [
'yii\web\JqueryAsset',
];
}
以下是 _form
视图的片段:
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\jui\DatePicker;
/* @var $this yii\web\View */
/* @var $model frontend\models\Profile */
/* @var $form yii\widgets\ActiveForm */
?>
...
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'birthdate')->widget(DatePicker::className(), ['clientOptions' => ['dateFormat' => 'yy-mm-dd']]) ?>
但是,这种方式并不是 oop 得到我想要的解决方案。我不知道在我看来我必须做什么 _form.php
才能覆盖 JuiAsset 对象的 属性 $css
不仅这不是 OOP,而且修改核心 Yii 文件也是不好的。
2 个选项:
- 执行此操作 https://github.com/yiisoft/yii2/issues/6170 这是您在 google 上搜索时出现的第二个 link。如果你输入问题的确切名称,它是第 4 个,所以你可以在以后尝试
- 在第一个之后注册你的新主题(css 文件)
默认注册。最后注册的主题中的 类 将
覆盖默认的。
编辑:
你告诉我你在评论里找东西
Yii::$app->set('assetManager' , [
'class' => 'yii\web\AssetManager',
'bundles' => [
'yii\widgets\ActiveFormAsset' => [
'js' => [],
'depends' => [
'yii\adminUi\assetsBundle\AdminUiActiveForm',
],
],
'yii\grid\GridViewAsset' => [
'depends' => [
'backend\assets\AppAsset'
],
],
],
'linkAssets' => true,
]);
有点旧,但您应该将 assetManager 覆盖放在 config/web.php 文件中 'components' 下,如下所示:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'assetManager' => [
'bundles' => [
'yii\jui\JuiAsset' => [
'css' => [
'themes/flick/jquery-ui.css',
]
]
]
],
],];
我刚刚测试了这个,因为我正在寻找类似的东西,工作得很好
我使用了 yii2-jui 的 datePicker,我想更改使用的 Jquery Ui 主题。
我在 myapp\vendor\yiisoft\yii2-jui\JuiAsset.php
class JuiAsset extends AssetBundle
{
public $sourcePath = '@bower/jquery-ui';
public $js = [
'jquery-ui.js',
];
public $css = [
'themes/THE_OTHER_THEME/jquery-ui.css',
];
public $depends = [
'yii\web\JqueryAsset',
];
}
以下是 _form
视图的片段:
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
use yii\jui\DatePicker;
/* @var $this yii\web\View */
/* @var $model frontend\models\Profile */
/* @var $form yii\widgets\ActiveForm */
?>
...
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'birthdate')->widget(DatePicker::className(), ['clientOptions' => ['dateFormat' => 'yy-mm-dd']]) ?>
但是,这种方式并不是 oop 得到我想要的解决方案。我不知道在我看来我必须做什么 _form.php
才能覆盖 JuiAsset 对象的 属性 $css
不仅这不是 OOP,而且修改核心 Yii 文件也是不好的。
2 个选项:
- 执行此操作 https://github.com/yiisoft/yii2/issues/6170 这是您在 google 上搜索时出现的第二个 link。如果你输入问题的确切名称,它是第 4 个,所以你可以在以后尝试
- 在第一个之后注册你的新主题(css 文件) 默认注册。最后注册的主题中的 类 将 覆盖默认的。
编辑: 你告诉我你在评论里找东西
Yii::$app->set('assetManager' , [
'class' => 'yii\web\AssetManager',
'bundles' => [
'yii\widgets\ActiveFormAsset' => [
'js' => [],
'depends' => [
'yii\adminUi\assetsBundle\AdminUiActiveForm',
],
],
'yii\grid\GridViewAsset' => [
'depends' => [
'backend\assets\AppAsset'
],
],
],
'linkAssets' => true,
]);
有点旧,但您应该将 assetManager 覆盖放在 config/web.php 文件中 'components' 下,如下所示:
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'components' => [
'assetManager' => [
'bundles' => [
'yii\jui\JuiAsset' => [
'css' => [
'themes/flick/jquery-ui.css',
]
]
]
],
],];
我刚刚测试了这个,因为我正在寻找类似的东西,工作得很好