如何讓我的ZF2模塊爲特定控制器加載其他佈局文件?針對不同控制器的不同佈局文件
考慮您的ZF2應用模塊中有IndexController
和AdminController
和IndexController
使用layout.phtml但要使用adminlayout.phtml爲AdminController
。
這怎麼可能?
如何讓我的ZF2模塊爲特定控制器加載其他佈局文件?針對不同控制器的不同佈局文件
考慮您的ZF2應用模塊中有IndexController
和AdminController
和IndexController
使用layout.phtml但要使用adminlayout.phtml爲AdminController
。
這怎麼可能?
class Module {
public function onBootstrap($e) {
$em = $application->getEventManager();
$em->attach(MvcEvent::EVENT_DISPATCH, function($e) {
$controller = $e->getTarget();
if ($controller instanceof Controller\AdminController) {
$controller->layout('layout/layoutadmin.phtml');
} else {
$controller->layout('layout/layout.phtml');
}
});
}
}
,不要忘記在你的模塊配置文件中添加該配置來註冊新的控制器:
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController',
'Application\Controller\Admin' => 'Application\Controller\AdminController',
),
),
等最佳解決方案:
'view_manager' => array(
'template_path_stack' => array(
'YOURMODULENAME' => __DIR__ . '/../view',
),
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
),
),
變化YOURMODULENAME到您的模塊專用名稱
我正在嘗試這個,但是不工作,它真的不在乎'佈局/佈局' – albanx 2013-04-18 14:25:32
你應該確認路由器是你的路由輔助模塊用於加載然後調度...請將代碼上傳到某處 – 2013-04-19 07:06:22
只是想讀其他人可能會閱讀是。如果你認爲你需要不同的佈局,那麼在你的構架中可能會有一些改進。一般來說你只需要一個佈局。如果你需要兩種佈局,也許你應該有兩個獨立的應用程序(或兩個單獨的入口點)。或者,也許你需要更深思熟慮地使用新的ZF2嵌套視圖模型系統......只是想法。 – superdweebie 2012-08-12 22:22:47
也許它是很好的使用A模塊索引然後一個模塊管理 – 2012-08-14 09:40:41
我已經修復了你的標記。提供一個解釋和利用這個解決方案會改善這個答案很多。 (例如,爲什麼或爲什麼不這樣做而不是手動指定控制器中的佈局?) – Matsemann 2012-08-14 11:50:41