Как заставить мой модуль ZF2 загружать другой файл макета для конкретного контроллера?
У вас есть IndexController
и IndexController
в вашем прикладном модуле ZF2, а 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 на ваше конкретное имя модуля