いくつかのビュー テンプレート (ページ コンテンツをレンダリングするビュー テンプレートとサイドバーをレンダリングするビュー テンプレート) の Web ページを構成する必要があります。私の layout.phtml には、$content と $sidebar という 2 つの変数プレースホルダーがあります。
......
<?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 を設定するコードを再利用する推奨される方法はありますか?