2013-10-24 50 views
4

我有兩個模塊的學生和老師。 我也有兩個不同的佈局,一個是studentlayout.phtml,另一個是teacherlayout.phtml在Zend Framework 2中爲不同的模塊設置不同的佈局?

如何爲Teachermodule設置學生模塊和teacherlayout的studentlayout?

由於薩姆的回答。感謝它的工作正常。

但我也想爲教師設置兩種不同的佈局。 所以我添加下面的代碼在我的主配置文件的項目:教師模塊

'module_layouts' => array(

    'Teacher' => array(
     'default' => 'layout/adminlayout', 
     'login' => 'layout/loginlayout', 
    ), 
    'Student' => 'layout/studentlayout', 
), 

我module.config.php文件:

'module_layouts' => array(

    'Teacher' => array(
     'default' => 'layout/adminlayout', 
     'login' => 'layout/loginlayout', 
    ), 
     'Student' => 'layout/studentlayout', 
), 

但所有專任教師模塊取adminlayout的一切行動。爲什麼登錄操作無法使用loginlayout?它的ovveride?

+0

我已經在這裏下文稱所有的舊帖子在這裏更多的控制器,但它不能給我適當的答案,所以我張貼我的問題在這裏。 –

+0

我使用EdpModuleLayouts,但只用於相同模塊中的佈局佈局。它如何調用多個模塊? –

+1

EdpModuleLayouts特別設計用於幾種不同模塊的幾種佈局。我**強烈**建議您閱讀有關模塊的自述文件以瞭解其工作原理(或僅查看Module.php並理解代碼 - 它的代碼非常簡單) – Sam

回答

3

使用

使用EdpModuleLayouts是非常,非常簡單。在任何模塊配置或自動加載的配置文件中,只需指定以下內容:

array(
    'module_layouts' => array(
     'Teacher' => 'layout/teacher', 
     'Student' => 'layout/student' 
    ), 
); 

就是這樣!當然,您也需要定義這些佈局......只需查看應用程序模塊module.config.php以瞭解如何定義佈局。

1

如果你只想改變你的一個動作的佈局,你可以在你的控制器動作中使用layout()插件,或者如果你想在你的模塊中的一個控制器中的所有動作有不同的佈局,你可以在bootstrap中做到這一點:

public function onBootstrap(\Zend\EventManager\EventInterface $e) { 
    $eventManager = $e->getApplication()->getEventManager(); 
    $sharedEventManager = $eventManager->getSharedManager(); 
    $sharedEventManager->attach('Auth\Controller\AuthController', \Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch')); 
} 

public function onDispatch(MvcEvent $e) { 
    $controller = $e->getTarget();  
    $controller->layout('layout/loginLayout'); 
} 

在控制器的每個動作,你將改變根視圖模型後佈局,可以走得更遠,並指定您希望您的佈局像這樣

$sharedEventManager>attach(array('Auth\Controller\AuthController', 
'Auth\Controller\Registration'), 
\Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch')); 
} 
+0

感謝您使用這個簡單的技巧。我很驚訝Zend Framework 2對於不同的模塊沒有適當的佈局處理程序......應該像基本的東西 –

相關問題