Доброго дня!!!
Вопрос такой! Каким образом передать переменную в 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; } }