Zend Framework Per-Module na základe nastavenia

Tým, Steven Lloyd Watkin , v piatok 01.1.2010 22:40

Vytvoril som reakciu na tento post, ktorý vyžaduje menej konfigurácie, pozri modul založený Layout - Zend Framework .

Pri použití Zend Frameworku s modulmi, ich zjavné, že ak používate rôzne (sub-) miesta mimo rovnaká žiadosť nemusíte nutne chcieť rovnaké rozloženie skripty pre každú časť. Rozhodol som sa ísť s nasledujúce štruktúry webu:

  / Aplikácie
     / Regulátory
         ...
     / Modely
     / Modules
         / Default
             / Regulátory
             / Rozvrhnutie
                 / Skripty
             / Pohľady
                 / Skripty
         / AnotherModule
             ...
     / Skripty

Problém bol v nastavení rozloženia skripty na na-základ modul. Odpoveď prišla až s použitím Akcia Helper. Nastavenie rozloženia na na-základ modul zahŕňa tri kroky:

  1. Application.ini (alebo podobnú konfiguráciu nastavenia):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouty / skripty"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouty / skripty"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / člen / layouty / skripty"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouty / skripty" 
  2. Vytvorte si svoj Akcia Helper:
      <? Php
     / **
      * Nastavuje rozloženie cestu na per-modul základe
      *
      * @ Autor Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 2010-01-01
      * /
     trieda Pro_Controller_Action_Helper_SetLayoutPath
         rozširuje Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nastavuje usporiadanie cestu založenú na module
          * /
         verejnej funkcie preDispatch ()
         {
        	 $ Modul = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ boot strap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('zavádzanie')) {
    
    	         $ Config = $ boot strap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['zdrojov'] ['layout'] ['layoutPath'])) {
    	             $ = LayoutPath
    	                  $ Config [$ modul] ['zdrojov'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. A konečne boostrap akcie pomocníka:
      ...
         / **
          * Nastavuje usporiadanie skripty na na-základ modul
          * /
         chránené funkcie _initLayoutHelper ()
    	 {
    	     $ This-> boot strap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         nový Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Reakcia na "Zend Framework Per-Module na základe nastavenia"

  1. Behrang hovorí:

    Ahoj vďaka za vaše prvé užitočné cvičenie, ale povedzte mi, kde som sa vytvoriť akciu pomocníka s názvom súboru čarodejnice?
    behrang

  2. Ahoj Behrang, vytvoriť akčné pomocník sa podľa toho mena sa vám páči, mám vlastné 'knižnici' s menného priestoru 'Pre'. Dalo by sa rovnako ľahko volať triedu 'SetLayoutPath' a dal to, kde vôbec chcete, za predpokladu, že kód môže nájsť a rozšíriť si požadovanej triedy

  3. Shashi Kanth hovorí:

    Ahoj, IAM zamieňať s nastavením modulu osobitnej databáze nastavenia ... Má niekto nápad?

  4. Myslím, že by to mohlo byť ľahko dosiahnuť usign vyššie uvedenej štruktúry. Po prvé, vytvorenie možnosti v ini súbor pozdĺž súbory:

    moduleName.db.user = "
    moduleName.db.password = "
    moduleName2.db.user = "
    ... Atd ...

    Potom jednoducho vygenerovať pripojenie k databáze, ako uznáte za vhodné (Zend_Db:: továreň () alebo podobný) a schoval ho v registri, alebo nastaviť ako predvolené adaptér, ak používate Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Required













Panorama Téma, ktoré Themocracy

6 návštevníkov online teraz
3 osoby, 3 roboty, 0 členov
Max návštevníkov dnes: 17 v 12:28 UTC
Tento mesiac: 26 na 07.05.2011 00:35 UTC
Tento rok: 130 v 28-03-2011 22:40 UTC
Všetky čas: 130 v 28-03-2011 22:40 UTC