public function actionView()
{
$post=$this->loadModel();
$this->render('view',array(
'model'=>$post,
));
}
Здесь в переменную $post кладем объект найденного поста, а затем передаем его в представление, где он доступен в качестве переменной $model. Таким образом, в представление попадают только те данные, которые нам нужны.
P.S. Для справки, делается это с помощью php функции extract().
Да, только в вид, и на самом деле большего и не надо. Layout - общее представление для многих экшенов, в которых могут быть разные переменные, а делать if’ы это не “тру”. Остается либо добавить в контроллер поле, либо создавать виджеты.
if ($this->route == 'site/index')
$this->renderPartial(...);
else
// ...
Если каждый экшен захочет ставить туда что-то своё, то создать в контроллере поле, которое будет, например, названием подключаемого виджета или представления.