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


















































Прывітанне першых дзякуй за ваш карысны падручнік, але скажыце мне, дзе я ствараю памочнік дзеянні з ведзьмай імя файла?
behrang
Прывітанне Behrang, стварыць памочнік дзеянні з якой імя вам падабаецца, у мяне ёсць свая "Бібліятэка" з прасторай імёнаў "Pro". Вы можаце так жа лёгка, называем "SetLayoutPath" класа і змясціць яго, дзе б вы хацелі, пры ўмове, код можа знайсці яго, і вы разьзяўляеце неабходныя класы
Прывітанне, IAM блытаць з стварэннем модуля канкрэтныя параметры базы дадзеных ... Хто-небудзь ёсць ідэі?
Я думаю, што гэта можа быць лёгка дасягнута usign вышэй шаблону. Па-першае, стварэнне варыянтаў у INI-файл разам файлы:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... І г.д. ...
Затым проста згенераваць падключэнне да базы дадзеных па сваім меркаванні (Zend_Db:: завод () або аналагічныя) і збіраць яго далёка ў рэестр ці ўсталяваць яго ў якасці адаптара па змаўчанні пры выкарыстанні Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).