您可以使用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;