Как передать данные с контроллера в layout?

Здравствуйте. Прошу прощение за такой простой вопрос. Но не пойму как передать данные в layout [main.php].

Тут данные передаются в представления через render(); но их видно только в том шаблоне а не в основном.

В ZF там можно было передать так: $this->view->value = ‘Супер крутой сайт’; и в layout вытащить $this->value.

Тут вот развожу руками, в доках не нашел про это…

Хочу просто передать мета теги и title.

Вообще, в Yii существует специальный метод для установки мета-тегов. Также CController имеет свойство pageTitle, т.е. заголовок устанавливается в контроллере так:




$this->pageTitle = 'Супер крутой сайт';



Если отвечать на общий вопрос о передаче данных в layout, то такой возможности нет, потому что она не нужна. Макет является общим для всех контроллеров (или для части контроллеров), поэтому если один контроллер захочет передать ему какие-то данные, а другой этого делать не будет, то придется выносить логику в тот самый layout, чтобы выводить что-то в зависимости от контроллера.

А если все-таки, наконец, ответить на вопрос … :) Нужно добавить в контроллер свойство foo, а в макете обращаться к нему следующим образом (тут нет проверки, обладает ли контроллер данным свойством):




echo $this->foo;



Или использовать различные макеты для контроллеров, чтобы не добавлять лишнюю логику в макет (например, Yii генерирует стандартный сайт с двумя различными макетами column1 и column2, которые вставляются в самый общий макет).

так же стоит просмотреть кукбук http://www.yiiframework.com/doc/cookbook/

там реально много примеров.