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 ()); } ...

















































