在这方面找不到任何合理的答案。
在控制器中,您返回一个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 中有用的东西。