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 посетителей сейчас
3 гостей, 3 ботов, 0 пользователей
Макс посетителей сегодня: 15 в 08:24 AM UTC
В этом месяце: 26 в 07-05-2011 12:35 утра UTC
В этом году: 130 в 28-03-2011 10:40 вечера UTC
За все время: 130 в 28-03-2011 10:40 вечера UTC