Изменить тему JuiAsset в yii2

0

Я использую datePicker от yii2-jui, и я хочу изменить используемую тему 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']]) ?>

Однако этот способ не является решением, чтобы получить то, что я хочу. Я не могу понять, что мне нужно сделать в моем представлении _form.php чтобы он мог переопределить свойство объекта JuiAsset $css

Теги:
oop
yii2
yii2-advanced-app

2 ответа

1
Лучший ответ

Не только это не ООП, а изменение основных файлов Yii.

2 варианта:

  1. сделайте это https://github.com/yiisoft/yii2/issues/6170, это вторая ссылка, которая появляется при поиске в google. Если вы укажете точное имя вопроса, это номер 4, чтобы вы могли попробовать это в будущем.
  2. Зарегистрируйте новую тему (файл css) после зарегистрированной по умолчанию. Классы в последней зарегистрированной теме перезапишут те, которые по умолчанию.

EDIT: Вы сказали мне, что ищете что-то в комментариях

  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,
            ]);
  • 0
    Второй вариант не очень хорош, потому что он приведет к ненужной загрузке файлов и более длительному отклику (очень плохо в производстве). Первое - хорошо, но я не знаю, где и как я могу это реализовать.
  • 0
    yiiframework.com/doc-2.0/yii-web-assetmanager.html снова попробуйте Google, это хорошо.
Показать ещё 1 комментарий
0

немного устарел, но вы должны поместить переопределение assetManager в файл config/web.php в разделе "Компоненты" следующим образом:

$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],

'components' => [
    'assetManager' => [
        'bundles' => [
            'yii\jui\JuiAsset' => [
                'css' => [
                    'themes/flick/jquery-ui.css',
                ]
            ]
        ]
    ],   
],];

я просто испытал это, поскольку я искал что-то похожее, работал просто отлично

Ещё вопросы

Сообщество Overcoder
Наверх
Меню