2012-09-25 10 views
1

這是一個ZF2問題。在調度事件中訪問ViewModel變量

我試圖改變我的模板,這取決於設置在我的控制器上的變量(因爲那裏即將決定使用哪個模板)。 在我的模塊onBooststrap我有:

$this->eventManager->attach('dispatch', function($e) 
    { 
     if (0 === strpos($e->getRouteMatch()->getParam('controller'), __NAMESPACE__, 0)) 
     { 
      $e->getViewModel()->setTemplate('layout'); 
     } 

    }, -100); 

,並在我的控制器:

class IndexController extends AbstractActionController 
{ 
    public function indexAction() 
    { 
     $view = new \Zend\View\Model\ViewModel(); 
     $view->setVariable("layout", "layout"); 
     return $view; 
    } 
} 

但是,我怎麼可以訪問該視圖變量「佈局」,這樣我就可以在調度更改setTemplate上的事件?

回答

2

看着onDispatch方法和MvcEvent類似乎有一個getResult()方法,這可能包含控制器操作的結果。

否則你看過佈局控制器插件?這個插件將允許您更改模板:

$this->layout('new layout'); 

當然,這將需要在控制器內,最有可能需要增加模板到模板地圖。

+0

getResult()其實是一個解決方案。謝謝。 – MGP