可以使用Zend\Mvc\Controller\Plugin\Forward
控制器插件从内部派遣另一另一个控制器动作。
文档说
有时,你可能想从匹配的控制器内派遣额外的控制器 - 例如,你可以使用这种方法来建立“部件化”内容。 Forward插件有助于实现这一点。
如果您已经有了这些操作,但希望将它们与其他人结合以构建聚合视图,那么这很有用。
use Zend\View\Model\ViewModel;
class AdminController extends AbstractActionController
{
public function adminDashboardAction()
{
$view = new ViewModel();
$view->setTemplate('admin/admin/dashboard');
//..
$serverStatsWidget = $this->forward()->dispatch('ServiceModule\Controller\Server', array(
'action' => 'status',
'foo' => 'bar',
));
if ($serverStatsWidget instanceof ViewModel) {
$view->addChild($serverStatsWidget, 'serviceStats');
}
return $view;
}
由于$serverStatsWidget
是派出控制器的结果,然后你可以只是使用echo
添加到“主”视图作为一个孩子和渲染的结果。
// admin/admin/dashboard.phtml
echo $this->serviceStats;
纠正我,如果我错了;你需要分派一个控制器动作并从结果视图模型创建小部件? – AlexP 2014-08-27 19:10:47
我认为这应该工作:''返回$这个 - > getView() - >渲染( '应用程序/控制器/行动',阵列( 'PARAM'=> '值'));''没试过从内部派遣视图助手。 – 2014-08-27 19:15:09
Gilberto Albino - >谢谢。重新阅读有关MVC后,我发现我应该解析渲染()和使用服务来解析从数据库等数据的感谢。 – KatsuoRyuu 2014-08-27 21:23:01