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