我需要组成几个视图模板的网页(视图模板渲染页面内容和视图模板渲染侧边栏)。在我的 layout.phtml 中,我有两个变量占位符:$content 和 $sidebar:
......
<?php echo $this->sidebar; ?>
......
<?php echo $this->content; ?>
......
在我的控制器的操作中,我通过链接在树中的 ViewModel 将数据传递给这些视图模板:
public function indexAction() {
// Preparing my data
// $form = ...
// $menuItems =
// $activeItem =
// Create sidebar view model
$sidebarViewModel = new ViewModel(array('menuItems'=>$menuItems, 'activeItem'=>$activeItem));
// Add it as a child to layout view model
$this->layout()->addChild($sidebarViewModel, 'sidebar');
// Page content view model
$viewModel = new ViewModel(array('form'=>$form));
return $viewModel;
}
但是,因为我在每个页面上都有侧边栏,所以我必须为每个控制器的每个操作复制并粘贴此代码。是否有任何推荐的方法来重用填充侧边栏的 ViewModel 的代码?