как корректно сменить layout для контроллера

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
kaiser Zaido
Сообщения: 21
Зарегистрирован: 2009.07.15, 13:59

как корректно сменить layout для контроллера

Сообщение kaiser Zaido »

По умолчанию все представления рендерятся с использованием layout main.php.

Скопировал файл main.php с названием admin.php. В своем контроллере в конструкторе прописал:

Код: Выделить всё

 
$this->layout="admin";
 
В результате ловлю исключение о том что файл (который рендерится) не найден.

В документации говорят о том что надо просто сменить переменую layout. Но похоже, что после того как ее сменить представления начинают искаться в других папках.
kaiser Zaido
Сообщения: 21
Зарегистрирован: 2009.07.15, 13:59

Re: как корректно сменить layout для контроллера

Сообщение kaiser Zaido »

Проблема была в том что я создал конструктор. И не вызвал из него родительский конструктор.

Отсюда вытекает следующий вопрос - как корректно создать конструктор в контроллере? Т.е. родительский перегрузить?
ССontroller __construct хочет какой-то id , я ему давал разные строки и они ему не годятся :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: как корректно сменить layout для контроллера

Сообщение samdark »

Используй init() вместо конструктора.
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: как корректно сменить layout для контроллера

Сообщение Ozzy »

Код: Выделить всё

    function __construct() {
        return parent::__construct();
    } 
Мой маленький блог - http://dbhelp.ru
kaiser Zaido
Сообщения: 21
Зарегистрирован: 2009.07.15, 13:59

Re: как корректно сменить layout для контроллера

Сообщение kaiser Zaido »

2Ozzy
Проблема в том, что у CController нет конструктора без параметров.
http://floomby.ru/content/fnD6HvLOEa/
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: как корректно сменить layout для контроллера

Сообщение Ozzy »

Точно, я давно ковырял и забыл :)
Вот так точно будет работать:

Код: Выделить всё

    function __construct($id) {
        return parent::__construct($id);
    }    
п.с. проверил. работает. но использовать init думаю будет идеологически правильнее ;)
Мой маленький блог - http://dbhelp.ru
Ответить