これに関する合理的な答えはどこにも見つかりません。
コントローラーでは、ViewModel
子 ViewModel を含めることができるインスタンスを返します。わかりましたが、これらの子ブロックには変数も必要です。変数は、同じコントローラー アクションですぐに設定できます。しかし、どうすれば 11 ページの長さのコントローラー アクションを正確に回避できるでしょうか?
たとえば、Magento では、ビュー スクリプトは、ビューを変更する特定のメソッドを持つクラスである「ブロック」から派生するため、子 html を取得するだけで、独自のメソッドを使用して独立して処理できます。
実用的(テンプレート法):
<?php echo $this->getSidebar(); ?>
非現実的 (ZF2 コントローラー):
$leftSidebar = new ViewModel(...
$leftSidebarPostsWidget = new ViewModel(...
$leftSidebar->addChild($leftSidebarPostsWidget);
$view = new ViewModel();
$view->addChild($leftSidebar);
return $view;
私はビューヘルパーを調べましたが、それらは不要なすべてのビュースクリプトで利用できるようです.
カスタム レンダー クラスを特定のテンプレートに関連付ける方法はありますか?
ViewModel を拡張するブロック クラスを作成することもできますが、残念ながら、Zend Framework 2 で役立つものが不足しています。