Zend Framework Per-modul baserad inställningar

Genom Steven Lloyd Watkin , fredag ​​1 januari 2010 22:40

Jag har skapat en uppföljning till det här inlägget som kräver mindre konfiguration, se Modul baserad layout - Zend Framework .

När du använder Zend Framework med moduler, dess självklart att om du kör olika (del-) platser från samma program som du inte nödvändigtvis vill ha samma layout skript för varje del. Jag bestämde mig för att gå med på följande webbplats struktur:

  / Ansökan
     / Controllers
         ...
     / Modeller
     / Moduler
         / Default
             / Controllers
             / Layout
                 / Skript
             / Visningar
                 / Skript
         / AnotherModule
             ...
     / Skript

Problemet var att inrätta layouten skript på en per-modul basis. Svaret kom genom att använda en handlingsplan Helper. Ställa in layouter på en per-modul grund omfattar tre steg:

  1. Application.ini (eller liknande konfiguration setup):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouter / scripts"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ modules / default / layouter / scripts"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / member / layouter / scripts"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / affiliate / layouter / scripts" 
  2. Skapa din Action Helper:
      <? Php
     / **
      * Ställer layouten väg på en per-modul grundval
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Sedan 2010/01/01
      * /
     klass Pro_Controller_Action_Helper_SetLayoutPath
         sträcker Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Ställer layout väg bygger på modul
          * /
         offentlig funktion preDispatch ()
         {
        	 $ Modul = $ this-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ module] ['resurser'] ['layout'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ module] ['resurser'] ['layout'] ['layoutPath'];
    	             $ This-> getActionController ()
    	                  -> GetHelper ("layout")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. Och slutligen boostrap åtgärden helper:
      ...
         / **
          * Ställer upp layouten skript på en per-modul grundval
          * /
         skyddad funktion _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap (frontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker:: addHelper (
    	         ny Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Svaren till "Zend Framework Per-modul baserad inställningar"

  1. Behrang säger:

    Hej först tack för din hjälp tutorial men säg mig var jag skapa handling hjälpare med häxa filnamn?
    Behrang

  2. Hej Behrang skapar åtgärden hjälpare med vilket namn du vill, jag har mina egna "bibliotek" med namespace "Pro". Du kan lika gärna kalla klassen "SetLayoutPath" och placera den vart du vill, förutsatt att koden kan hitta det och du förlänga den nödvändiga klasser

  3. Shashi Kanth säger:

    Hej, IAM förväxlas med att inrätta modul särskild databas inställningar ... gör någon har en idé?

  4. Jag tror att detta lätt skulle kunna uppnås usign detta mönster. För det första skapar alternativ i din ini-fil längs filer:

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

    Sedan helt enkelt skapa din databas anslutning som du tycker passar (Zend_Db:: fabrik () eller liknande) och stash bort det i registret eller ställa in den som standard adaptern om du använder Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Lämna ett svar













Panorama Tema av Themocracy

5 besökare online just nu
4 personer, 1 bots, 0 medlemmar
Max besökare idag: 11 på 01:06 UTC
Denna månad: 22 kl 2011/08/06 12:30 UTC
I år: 130 på 28-03-2011 22:40 UTC
Alla tid: 130 på 28-03-2011 10:40 UTC