2013-12-12 2 views
0

В моем проекте, где у меня есть два модуля, один из них - интерфейс, а другой - бэкэнд, потому что на экране есть два разных макета, поэтому каждый, теперь я могу изменить 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; 
     }, 
    ), 
    ); 
    } 
Смежные вопросы