У меня есть два модуля, по умолчанию и mojo.
После первоначального кода бутстрапинга, который является одним и тем же для обоих модулей, я хочу, например, использовать разные макеты для каждого модуля (или использовать разные проверки учетных данных и т. Д.).
Где я помещаю это: IF (модуль == «харизмы») делают это ELSE сделатьКак использовать различную загрузку для разных модулей в zend framework
ответ
хмм я попытался нету этого
так, как я сделал, что теперь был через фронт контроллер плагин
что-то вроде
switch ($request->getModuleName()) { case "": // set layout ... }
Если вы используете Zend_Application (в ZF1.8), то вы S должен иметь возможность использовать специфичные для модуля параметры конфигурации, чтобы обеспечить эту функциональность, как описано в разделе relevant section in the documentation.
Это потребует вас установить макет в конфигурации, так это выглядело как-то
mojo.resources.layout.layout = "mojo"
anothermodule.resources.layout.layout = "anotherlayout"
Компоновка затем будет установлен автоматически загрузчиком.
Другой альтернативой является использование переднего контроллера, который реализует метод preDispatch() для установки макета на основе имени модуля.
Я рассмотрел этот вопрос пару дней назад, пытаясь заставить его работать над конфигурацией bootstrap. Большая проблема заключается в том, что загружаются все загрузочные файлы, поэтому он дает некоторые странные результаты, в которых используется макет.
Я пришел к выводу, что вы можете иметь конфигурацию на месте, но вам нужно работать с плагинами FrontController или с помощниками ActionController. Если вы хотите использовать config, установленный в application.ini, и вы хотите загрузить конфигурацию через загрузочный лоток, помощники - единственный способ пойти. Затем из помощника вы можете загрузить ActionController и выполнить команду getInvokeArgs для загрузки начальной загрузки. Много Hastle ... :)
Во всяком случае, я сделал небольшую реализацию в качестве примера в блоге: http://blog.keppens.biz/2009/06/create-modular-application-with-zend.html
GOODLUCK,
Jeroen
tnx, ссылка iceangel89 (принятый ответ) дала мне очень прямолинейный и простой в реализации. –
+1 это кажется намного проще, чем мой ответ :), но куда будет идти файл layoutname.phtml? MODULENAME/макеты? или defaultmodule/layouts? – iceangel89
Он может идти в любом месте. Если вы хотите его в каталоге модуля, используйте автозагрузчик модуля, чтобы добавить модуль в другое пространство имен. –
Кто-нибудь проверял это на работу? Из http://bit.ly/f3Ioc «Можно подумать, что добавление второй строки с« default »будет включать макеты, специфичные для модуля, но, к сожалению, это не так. Он будет использовать последний указанный шаблон« – joedevon