Переопределить конфигурацию Yii2 assetManager в контроллере

Я использую yii-jui, чтобы добавить некоторые элементы пользовательского интерфейса в представления, такие как datePicker. в frontend\config\main-local.php Я установил следующее, чтобы изменить тему, используемую JqueryUI:

$config = [
'components' => [
'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'gjhgjhghjg87hjh8878878',
],
'assetManager' => [
'bundles' => [
'yii\jui\JuiAsset' => [
'css' =>
['themes/flick/jquery-ui.css'],
],
],
],
],
];

Я попробовал следующее, чтобы переопределить этот элемент конфигурации в методе действий контроллера:

public function actions() {

Yii::$app->components['assetManager'] = [
'bundles' => [
'yii\jui\JuiAsset' => [
'css' =>
['themes/dot-luv/jquery-ui.css'],
],
],
];
return parent::actions();
}

Также я попытался установить значение Yii::$app->components['assetManager'] показано выше посмотреть сам (это частичный вид формы _form.php) и к Действие который вызывает это представление (updateAction). Тем не менее, все эти попытки не удастся изменить тему. Есть ли в Yii2 такой метод, найденный в CakePHP, как Configure::write($key, $value);?

3

Решение

Вы должны изменить Yii::$app->assetManager->bundles (Yii::$app->assetManager является объектом, а не массивом, например,

Yii::$app->assetManager->bundles = [
'yii\jui\JuiAsset' => [
'css' => ['themes/dot-luv/jquery-ui.css'],
],
];

Или, если вы хотите сохранить конфигурацию других пакетов:

Yii::$app->assetManager->bundles['yii\jui\JuiAsset'] = [
'css' => ['themes/dot-luv/jquery-ui.css'],
];
2

Другие решения

Вы идете об этом все неправильно, вы хотите изменить тему JUI для одного контроллера только из-за нескольких элементов управления. Вы применяете 2 файла CSS к различным частям веб-сайта, которые также могут изменять стили в макетах. Решение, которое вы нашли, работает, но это невероятно плохая практика.

Если вы хотите изменить только некоторые элементы управления, сделайте это правильно с помощью областей JUI.
Вот несколько ссылок, которые помогут вам:
http://www.filamentgroup.com/lab/using-multiple-jquery-ui-themes-on-a-single-page.html
http://jqueryui.com/download/

Таким образом, вы делаете сайт проще в обслуживании, и вы не создаете большую проблему на будущее, чем решаете сами.

1

По вопросам рекламы [email protected]