layout и переменные

Доброго дня!!!

Вопрос такой! Каким образом передать переменную в layout??? Поясню…я пишу блог…у каждой странички есть description и keywords - я их вынес в лайоут…каким образом мне их можно заполнить значениями…????

можно конечно вынести эти переменные в контроллер…как сделан pageTitle например…но может есть другой способ???

имхо иначе никак: выноси их в контроллер, который будет предком для всех твоих рабочих контроллеров.

А заполнять можно и во view-файлах:

сейчас примерно так же у меня и работает…только для меня удобней заполнять эти значения в контроллере… ;)

Спасибо!

Как вариант можно попробовать подключить сторонний шаблонизатор, например dwoo, который тоже поддерживает layout и может передавать туда переменные из дочернего шаблона.

xomaa, так ведь кажется можно и контроллере заполнять. Писать точно также:

а я именно так и делаю!

Quote

можно конечно вынести эти переменные в контроллер...как сделан pageTitle например....но может есть другой способ???

Я сделал так:

  1. в контроллере:
	public function filters()


	{


		return array(


			'accessControl',


			array('application.filters.HeadFilter + show, list',),


		);


	}
  1. создал фильтр:


class HeadFilter extends CFilter


{


    protected function preFilter($filterChain)


    {


		$controller=Yii::app()->controller;


		$action=$controller->action;


		if ($controller->id === 'site_content') {


			$model = site_content::model()->findByPk($_GET['id']);


			$controller->pageTitle = $model->title' '.Yii::app()->name;





			Yii::app()->params['description'] = strip_tags(substr($model->content,0,500));


		}


		if ($controller->id === 'news') {


			if ($action->id === 'show') {


				$model = news::model()->findByPk($_GET['id']);


				$controller->pageTitle = $model->title' '.Yii::app()->name;





				Yii::app()->params['description'] = strip_tags(substr($model->content,0,500));


			} else {


				$controller->pageTitle = 'Все новости. '.Yii::app()->name;


			}


		}


		return true;


    }


}