Zend Framework для кожного модуля заснована налаштування

За Стівен Ллойд Уоткін , п'ятниця 1 січня 2010 10:40 вечора

Я створив У відповідь на цю посаду, яка вимагає менше, див Модуль на базі макету - Zend Framework .

При використанні Zend Framework з модулями, її Очевидно, що якщо ви працюєте в різних (суб-) сайтів з одного додатку не обов'язково хочуть ж сценарії макет для кожної частини. Я вирішив піти з наступною структурою сайту:

  / Застосування
     / Контроллери
         ...
     / Моделі
     / Модулів
         / За замовчуванням
             / Контроллери
             / Розташування
                 / Сценарії
             / Переглядів
                 / Сценарії
         / AnotherModule
             ...
     / Сценарії

Проблема полягала у створенні макета сценаріїв на кожного модуля основі. Відповідь прийшла через використання помічник дії. Налаштування розкладки на кожного модуля основі складається з трьох етапів:

  1. 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 "/ модулі / філія / макети / сценарії" 
  2. Створіть свій помічник дії:
      <? 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);
    	         }
        	 }
         }
     } 
  3. І, нарешті boostrap помічник дії:
      ...
         / **
          * Створює макет сценаріїв на кожного модуля основі
          * /
         охоронюваних _initLayoutHelper функції ()
    	 {
    	     $ Цьому-> завантаження ('FrontController');
    	     $ Макета = Zend_Controller_Action_HelperBroker:: addHelper (
    	         нові Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Відповіді на "Zend Framework для кожного модуля заснована налаштування"

  1. Behrang каже:

    Привіт перше спасибі за ваш корисний підручник, але скажіть мені, де я створюю помічник дії з відьмою ім'я файлу?
    behrang

  2. Привіт Behrang, створити помічник дії з якою ім'я вам подобається, у мене є своя "Бібліотека" з простором імен "Pro". Ви можете так само легко, називаємо "SetLayoutPath" класу і помістити його, де б ви хотіли, за умови, код може знайти його, і ви розширюєте необхідні класи

  3. Шаші Kanth каже:

    Привіт, IAM плутати зі створенням модуля конкретні параметри бази даних ... Хто-небудь є ідеї?

  4. Я думаю, що це може бути легко досягнута usign вище шаблону. По-перше, створення варіантів в INI-файл разом файли:

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... І т.д. ...

    Потім просто згенерувати підключення до бази даних на свій розсуд (Zend_Db:: завод () або аналогічні) і збирати його далеко до реєстру або встановити його в якості адаптера за замовчуванням при використанні Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Написати відповідь













Панорама Тема Themocracy

6 відвідувачів зараз
4 гостей, 2 ботів, 0 користувачів
Макс відвідувачів сьогодні: 13 о 5:44 ранку UTC
У цьому місяці: 26 в 07-05-2011 12:35 ранку UTC
У цьому році: 130 в 28-03-2011 10:40 вечора UTC
За весь час: 130 в 28-03-2011 10:40 вечора UTC