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