У якасці наступных мер у маім папярэднім пасьце на кожны модуль на аснове параметраў макета для Zend Framework , я абнавіў код патрабуе менш канфігурацыі, чым раней (не тое, што патрабуецца больш, чым некалькі радкоў у канфігурацыі прыкладанні!).
Працягнуць чытанне "Zend Framework На Налады модуля Layout - Follow Up" »
Артыкулы , вылічальных , PHP , вэб-праграмаванне , Zend Framework |
дзеянні , кантролера , рамкі , памочнік , размяшчэнне , модуль , PHP , Zend , 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 ());
}
...