Доброго дня!!!
Вопрос такой! Каким образом передать переменную в layout??? Поясню…я пишу блог…у каждой странички есть description и keywords - я их вынес в лайоут…каким образом мне их можно заполнить значениями…
?
Доброго дня!!!
Вопрос такой! Каким образом передать переменную в layout??? Поясню…я пишу блог…у каждой странички есть description и keywords - я их вынес в лайоут…каким образом мне их можно заполнить значениями…
?
можно конечно вынести эти переменные в контроллер…как сделан pageTitle например…но может есть другой способ![]()
имхо иначе никак: выноси их в контроллер, который будет предком для всех твоих рабочих контроллеров.
А заполнять можно и во view-файлах:
сейчас примерно так же у меня и работает…только для меня удобней заполнять эти значения в контроллере… ![]()
Спасибо!
Как вариант можно попробовать подключить сторонний шаблонизатор, например dwoo, который тоже поддерживает layout и может передавать туда переменные из дочернего шаблона.
xomaa, так ведь кажется можно и контроллере заполнять. Писать точно также:
а я именно так и делаю!
Quote
Я сделал так:
public function filters()
{
return array(
'accessControl',
array('application.filters.HeadFilter + show, list',),
);
}
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;
}
}