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

5 наведвальнікаў онлайн
3 гасцей, 2 ботаў, 0 карыстальнікаў
Макс наведвальнікаў сёння: 10 у 03:01 AM UTC
У гэтым месяцы: 26 у 2011/05/07 12:35 раніцы UTC
У гэтым годзе: 130 у 2011/03/28 10:40 вечара UTC
За ўвесь час: 130 у 2011/03/28 10:40 вечара UTC