дополнительные переменные

привет!

растолкуйте плиз вот этот код =




$this->render('edit', array(

    'var1'=>$value1,

    'var2'=>$value2,

));



чтобы вывести в лайауте в нужных местах значения переменных var1 и var2 = ГДЕ и КАК мне надо объявить эти переменные и присвоить им значения?

Пример из блога:




public function actionView()

{

    $post=$this->loadModel();

    $this->render('view',array(

        'model'=>$post,

    ));

}



Здесь в переменную $post кладем объект найденного поста, а затем передаем его в представление, где он доступен в качестве переменной $model. Таким образом, в представление попадают только те данные, которые нам нужны.

P.S. Для справки, делается это с помощью php функции extract().

to andy_s,

то есть объявляем и нициализируем переменные мы только в контроллере?

а выводятся обявленные переменные в main.php из layout или в представлении для данного контроллера?

короче решил свою проблему так =

чтобы вывести нужный контент именно в layout в нужном месте - создаю статичный метод в контроллере, который включает нужный контент

а затем вывожу его в лайауте $this->название метода();

Переменные, переданные из экшена во view, доступны только внутри этого view.

Чтобы вывести контент в layout в нужном месте лучше использовать виджеты.

то есть из экшэна переменные можно передать только в вид…

в layout - никак?

за подсказку про виджеты спасибо

Да, только в вид, и на самом деле большего и не надо. Layout - общее представление для многих экшенов, в которых могут быть разные переменные, а делать if’ы это не “тру”. Остается либо добавить в контроллер поле, либо создавать виджеты.

а как тогда быть если в зависимости от урла в шапке или в подвале должен меняться контент или функционал?

ведь шапка и подвал находятся в лайауте…

В простом случае может сработать и такое:




if ($this->route == 'site/index')

    $this->renderPartial(...);

else

    // ...



Если каждый экшен захочет ставить туда что-то своё, то создать в контроллере поле, которое будет, например, названием подключаемого виджета или представления.