2013-12-12 26 views
0

在我的項目中,我有兩個模塊,一個是前端,另一個是後端,因爲屏幕上有兩個不同的佈局,所以每個都可以,現在我可以更改在單個Action上lauout,我想模擬zf1,控制器裏面有一個init()方法,可以執行,這樣所有的操作都可以改變lauout或者有任何的工作方式。如何更改zend framework2的所有動作中的佈局

ZF1 init()方法

class AjaxController extends Zend_Controller_Action 
{ 
    function init(){ 
     $this->_helper->layout()->disableLayout(); 
    } 
} 

ZF2 __construct()方法

public function __construct() 
{ 
    $this->layout('layout/administrator');//it's not work 
} 

pulic funciton indexAction() 
{ 
    $this->layout('layout/administrator');//it's work 
} 

回答

0

ZF1和ZF2在其結構方面有很大不同。 ZF2是事件驅動的;這意味着您將需要將事件偵聽器附加到控制器調度事件,或者命令它正確設置佈局。

class Module 
{ 
    public function getControllerConfig() 
    { 
    return array(
     'factories' => array(
     'Namespace\Controller\Ajax' => function($cpm) { 
      $controller = new Namespace\Controller\Ajax(); 
      $eventManager = $controller->getEventManager(); 
      $eventManager->attach('dispatch', function($event) { 
      // Set layout or perform actions prior to dispatch 
      $controller = $event->getTarget(); // Controller 
      $controller->layout('foo/bar'); 
      }); 
      return $controller; 
     }, 
    ), 
    ); 
    } 
相關問題