Zend okvirni Per-Module nastavitvami, ki temeljijo

Z Steven Lloyd Watkin , petek 1. januar 2010 22:40

Sem ustvaril slediti na to delovno mesto, ki zahteva manj konfiguracije, glejte Modul Na Layout - Zend okvir .

Pri uporabi Zend okvir z moduli, njeno očitno, da če ste z izvajanjem različnih (sub-) območij off ista vloga vam ni nujno želijo enake skripte postavitev za vsak del. Odločil sem se, da gredo z naslednjo strukturo mesta:

  / Uporaba
     / Krmilniki
         ...
     / Modeli
     / Moduli
         / Default
             / Krmilniki
             / Postavitev
                 / Skripte
             / Ogledov
                 / Skripte
         / AnotherModule
             ...
     / Skripte

Težava je bila ustanovitev postavitev skripte na per-modul osnovi. Odgovor je prišel s pomočjo akcijskega Helper. Nastavitev postavitve na per-modul podlagi treh korakov:

  1. Application.ini (ali podobno konfiguracijo setup):
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / postavitev / skripte"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / postavitev / skripte"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ modules / član / postavitev / skripte"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / affiliate / postavitev / skripte" 
  2. Ustvarite svoj akcijski Helper:
      <? Php
     / **
      * Nastavi postavitev pot na per-modul osnovi
      *
      * @ Avtor Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Saj 2010/01/01
      * /
     Razred Pro_Controller_Action_Helper_SetLayoutPath
         razširja Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nastavi postavitev pot, ki temelji na modulu
          * /
         javno funkcijo preDispatch ()
         {
        	 Modul $ = $ tega-> getRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ tega-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config ['postavitev'] [$ modul] ['virov'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Config [$ modul] ['postavitev'] ['virov'] ['layoutPath'];
    	             $ To-> getActionController ()
    	                  -> GetHelper ("postavitev")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. In nenazadnje boostrap ukrep helper:
      ...
         / **
          * Nastavi postavitev skripte na per-modul osnovi
          * /
         zaščitene funkcije _initLayoutHelper ()
    	 {
    	     $ To-> bootstrap ("frontController");
    	     $ Postavitev = Zend_Controller_Action_HelperBroker:: addHelper (
    	         novo Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 odgovor v "Zend okvirni Per-Module nastavitvami, ki temeljijo"

  1. Behrang pravi:

    Hi najprej hvala za vašo pomoč tutorial, ampak povej mi kje sem ustvariti akcijski helper čarovnica z imenom datoteke?
    behrang

  2. Hi Behrang, ustvarite ukrep helper z ustreznim imenom vam je všeč, imam svoj lasten "knjižnica" z namespace "Pro". Lahko bi prav tako enostavno klic v razred "SetLayoutPath" in ga povsod, kjer vam je všeč, če kodo lahko najdejo ter razširitev zahteva razredov

  3. Shashi kanth pravi:

    Hi, iam zamenjati z vzpostavitvijo modula posebno podatkovno bazo, nastavitve ... kdorkoli ima idejo?

  4. Mislim, da bi se to lahko enostavno doseči usign zgornji vzorec. Prvič, ustvariti možnosti v vašem ini datoteki vzdolž datoteke:

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

    Nato preprosto ustvarite zbirke podatkov povezavo, kot se vam zdi primerno (Zend_Db:: tovarne () ali podobno) in robo proč v registru ali ga nastavite kot privzeti adapter, če uporabljate Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Leave a Reply













Panorama Tema, ki jo Themocracy

4 obiskovalcev online zdaj
3 gostov, 1 pošto, 0 članov
Max Obiskovalcev danes: 10 ob 03:01 UTC
Ta mesec: 26 ob 2011/07/05 12:35 UTC
Letos: 130 28-03-2011 ob 22:40 UTC
Ves čas: 130 28-03-2011 ob 10:40 UTC