Так что я воюю с давних пор, чтобы перезаписать текущую тему. По некоторым причинам мне нужно включить новую тему из моего контроллера и что мне нужно изменить текущую тему активации. Как я могу переписать значение индекса темы для основной функции environment.php
private function _main() {
return array(
// Base Path
'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',
// Theme Name
'theme' => 'front_theme',
}
Теперь в контроллере я хочу изменить тему с фронта на user_theme.
Заранее спасибо.
Финал я нашел решение. Чтобы перезаписать текущую активированную тему, вам нужно создать функцию init в контроллере и указать название вашей новой темы. Вот код:
public function init()
{
Yii::app()->theme = 'user';
parent::init();
}
В Yii 1 у вас есть разные способы настройки темы, которая используется.
Вы можете иметь динамический способ, как вы обнаружили, путем инициализации метода свойства Yii::app()->theme
методе init()
.
Или вы можете установить тему в глобальном масштабе для приложения, что, вероятно, будет тем, что я бы предложил использовать, если у вас нет конкретных требований в config/main.php
:
return array(
// ...
'theme' => 'mytheme'
// ...
)
Это подберет тему, которую вы хотите использовать из /themes/mytheme/
и /themes/mytheme/
к /protected/views/
если шаблон не найден в первом.
Как последнее слово совета, если вы начинаете новый проект, я предлагаю начать прямо с Yii 2, а не Yii 1, так как теперь это предпочтительная и более современная версия фреймворка.