Zend Framework для кожного модуля на основі параметрів
Я створив наступних на цей пост, який вимагає менше конфігурації, див модуль на основі макета - Zend Framework .
При використанні Zend Framework, за допомогою модуля, його очевидним, що якщо ви працюєте з різними (суб-) сайти з однієї програми не обов'язково хочуть того ж, сценарії розкладка для кожної частини. Я вирішив піти з наступною структурою сайту:
/ Застосування / Контролери ... / Моделі / Модулів / По замовчуванню / Контролери / Розташування / Скрипти / Переглядів / Скрипти / AnotherModule ... / Скрипти
Проблема створення макета скрипти для кожного модуля. Відповідь прийшла через використання дій помічника. Налаштування розкладки на кожного модуля включає в себе три етапи:
- Application.ini (або аналогічні налаштування конфігурації):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / адміністратор / макети / скрипти" default.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / за замовчуванням / макети / скрипти" member.resources.layout.layoutPath = APPLICATION_PATH "/ модулів / учасників / макети / скрипти" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ модулі / філії / макети / скрипти"
- Створіть дії Helper:
<? PHP / ** * Встановлює розташування на шляху кожного модуля * * @ Автор Ллойд Уоткін <lloyd@evilprofessor.co.uk> * @ С 2010-01-01 * / Клас Pro_Controller_Action_Helper_SetLayoutPath розширює Zend_Controller_Action_Helper_Abstract { / ** * Набори розташування шлях, заснований на модулі * / громадських preDispatch функції () { Модуль $ = $ це-> GetRequest () -> getModuleName (); якщо ($ завантаження = $ це-> getActionController () -> GetInvokeArg ('завантаження')) { $ = $ Конфігурації завантаження-> getOptions (); якщо (Ісеть ($ CONFIG [$ модуль] ['ресурси'] ['схема'] ['layoutPath'])) { $ = LayoutPath $ CONFIG [$ модуль] ['ресурси'] ['схема'] ['layoutPath']; $ Це-> getActionController () -> GetHelper («розташування») -> SetLayoutPath ($ layoutPath); } } } }
- І, нарешті boostrap помічник дії:
... / ** * Встановлює розташування скриптів на кожного модуля * / захищена функція _initLayoutHelper () { $ Це-> завантаження ('FrontController'); $ = Розташування Zend_Controller_Action_HelperBroker :: addHelper ( новий Pro_Controller_Action_Helper_SetLayoutPath ()); } ...

















































