А как можно переключаться с одного на другой в разных модулях?
class AdminModule extends CWebModule
{
public function init()
{
$this->layout = '/layouts/main';
}
}
class DefaultController extends Controller
{
public function actionIndex()
{
$this->layout = '//layouts/column1';
$this->render('index');
}
public function actionView()
{
$this->layout = '//layouts/column2';
$this->render('index');
}
}
EVOSandru6: Внимательно прочитал документацию www.yiiframework.com/doc/api/1.1/CController#resol... , сделал вывод, что в моём предыдущем ответе была ошибка.
Соответственно, если шаблон находится в модуле, то путь нужно указывать через 1 слэш "/layouts/main"
Этот блок порекомендовал бы убрать
public function init()
{
$this->layout = '/layouts/main';
}
или заменить на
class AdminModule extends CWebModule
{
public $layout = '/layouts/main';
}
Kev: Благодарю, а насчет переключения подшаблонов не подскажете? Все русскоязычное перерыл и немного китайскоязычного, но ответа так и не нашел. В комментариях я упомянул о проблеме, если не затруднит, посмотрите здесь пожалуйста, я более подробно описываю проблему https://toster.ru/questionversion?question_id=2308...
EVOSandru6: когда мы в контроллере указываем шаблон контроллеру всё равно, является этот шаблон самостоятельным или отнаследован от другого (является шаблоном или "подшаблоном"). Т.е. "подшаблоны" указываются точно так же, как и остальные шаблоны.
Kev: Когда я в контроллере пишу так: $this->layout = '/layouts/main То попадаю в главный шаблон модуля, но если так: $this->layout = '/layouts/main/column1 , то стили падают. Есть какие нибудь средства в Yii - проследить правильность путей?
Kev: Да, существует, в экшене DefaultController прокатил такой вариант:
$this->layout = '/layouts/column2';
Но только почему то все подключения (css, js) берутся из другого main - который лежит в themes. Посмотрел, что themes приоритетнее, чем modules в плане темизации. Можно ли обойти этот момент, не создавая новой темы, просто используя тот main, который лежит в layouts модуля?
в DefaultController указан column2 $this->layout = '/layouts/column2';
, а пример кода "подшаблона" из mymodule/views/layouts/column1.php
не в этом ли различие?
Kev: Есть и mymodule/views/layouts/column1.php и mymodule/views/layouts/column2.php
В общем создал тему для модуля: themes/customer-theme,
class CustomerModule extends CWebModule
{
public function init()
{
Yii::app()->theme="customer-theme";
Стили берутся прямиком оттуда, а вот column1.php и column2.php из текущего модуля, если я их удаляю, то стили сыпятся. Как сделать, чтобы они брались из views темы? Куда приоритетность смотрит?!)