Zend Framework Per-modul baseret indstillinger

Ved Steven Lloyd Watkin , fredag ​​1 januar 2010 22:40

Jeg har oprettet en opfølgning til dette indlæg, som kræver mindre konfiguration, se Modul baseret layout - Zend Framework .

Når du bruger Zend ramme med moduler, dens indlysende, at hvis du kører forskellige (sub-) lokaliteter ud for samme program, som du ikke nødvendigvis ønsker det samme layout scripts for hver del. Jeg besluttede at gå med følgende websted struktur:

  / Anvendelse
     / Controllere
         ...
     / Modeller
     / Moduler
         / Default
             / Controllere
             / Layout
                 / Scripts
             / Visninger
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problemet var at oprette layoutet scripts på en per-modul basis. Svaret kom igennem ved hjælp af en handlingsplan Helper. Opsætning af layout på en per-modul grundlag består af tre trin:

  1. Application.ini (eller lignende konfiguration setup):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layout / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layout / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / medlem / layout / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layout / scripts" 
  2. Skab dit Action Helper:
      <? Php
     / **
      * Sætter layout sti på en per-modul grundlag
      *
      * @ Forfatter Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Da 2010/01/01
      * /
     klasse Pro_Controller_Action_Helper_SetLayoutPath
         udvider Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Sætter layout sti baseret på modul
          * /
         offentlig funktion preDispatch ()
         {
        	 $ Modul = $ this-> GetRequest så () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ('bootstrap')) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] ['ressourcer'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modul] ['ressourcer'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('Layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Og endelig boostrap aktionen helper:
      ...
         / **
          * Indstiller layout scripts på en per-modul grundlag
          * /
         beskyttet funktion _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ('frontController');
    	     $ Layout = Zend_Controller_Action_HelperBroker: addHelper (
    	         ny Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Responses til "Zend Framework Per-modul baseret indstillinger"

  1. Behrang siger:

    Hej første tak for Deres hjælpsomme tutorial, men fortæl mig, hvor jeg oprette handling hjælper med heks filnavn?
    behrang

  2. Hej Behrang, skabe handling hjælperen med uanset hvilken navn du kan lide, jeg har min egen 'bibliotek' med navneområdet 'Pro'. Du kunne lige så godt kalde klassens SetLayoutPath «og sætte det hvorhen du vil, forudsat at koden kan finde det, og du udvide krævede klasser

  3. Shashi kanth siger:

    Hej, IAM forveksles med oprettelsen modul særlig database indstillinger ... nogen der har en idé?

  4. Jeg tror, ​​at dette kunne nemt ske usign ovennævnte mønster. For det første skaber muligheder i din ini-filen langs filer:

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

    Så bare generere din database forbindelse, som du ønsker det (Zend_Db: fabrik () eller lignende) og stash det væk i registreringsdatabasen eller indstille den som standard adapteren, hvis du bruger Zend_Db_Table (Zend_Db_Table: setDefaultAdapter ()).

Efterlad et svar













Panorama Tema ved Themocracy

10 besøgende online nu
6 gæster, 4 bots, 0 medlemmer
Max besøgende i dag: 13 kl 12:15 UTC
Denne måned: 26 kl 2011/07/05 12:35 UTC
I år: 130 kl 28-03-2011 22:40 UTC
Alle tider: 130 kl 28-03-2011 10:40 UTC