У меня есть два модуля Студент и Учитель. У меня также есть два разных макета: studentlayout.phtml, а другой – teacherlayout.phtml
Как я могу установить studentlayout для модуля Student и teacherlayout для Teachermodule?
Как ответ Пер Сэма. Спасибо, что он работает отлично.
но я также хочу установить два разных макета для Учителя. Поэтому я добавляю следующий код в свой основной файл конфигурации для проекта:
'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?
Применение
Использование EdpModuleLayouts очень, очень просто. В любом конфигурационном файле конфигурации или автозагружаемом файле конфигурации просто укажите следующее:
array( 'module_layouts' => array( 'Teacher' => 'layout/teacher', 'Student' => 'layout/student' ), );
Это оно! Конечно, вам также нужно определить эти макеты … просто проверьте Модули приложений module.config.php
чтобы узнать, как определить макет.
Если вы хотите изменить макет только для своего действия, вы можете использовать плагин layout () в действии ваших контроллеров или если вы хотите разный макет для всех действий на одном контроллере только в своем модуле, вы можете сделать это в бутстрапе:
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'); }
После каждого действия на этом контроллере вы измените макет корневого макета ViewModel, который вы можете продолжить, и укажите здесь больше контроллеров, в которых вы хотите, чтобы ваш макет
$sharedEventManager>attach(array('Auth\Controller\AuthController', 'Auth\Controller\Registration'), \Zend\Mvc\MvcEvent::EVENT_DISPATCH, array($this, 'onDispatch')); }