Zend Framework por módulo opcións baseadas

Por Watkin Steven Lloyd , venres 01 de xaneiro de 2010 22:40

Eu creei unha continuación deste post, que require menos configuración, consulte Módulo Baseado Esquema - Zend Framework .

Ao usar o Zend Framework cos módulos, a súa evidente que, se está executando varios (sub) sitios fóra do mesmo programa que non quere necesariamente os mesmos scripts de esquema para cada parte. Eu decidimos ir coa estrutura do sitio a continuación:

  / Aplicación
     / Controladores
         ...
     / Models
     / Modules
         / Default
             / Controladores
             / Layout
                 / Scripts
             / Views
                 / Scripts
         / AnotherModule
             ...
     / Scripts

O problema foi a creación de guións de deseño nunha base por módulo. A resposta veu a través da utilización dun auxiliar de acción. Configurar o esquema nunha base por módulo implica tres pasos:

  1. Application.ini (ou setup de configuración semellante):
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / esquemas / scripts"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / esquemas / scripts"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ modules / member / esquemas / scripts"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / filial / esquemas / scripts" 
  2. Crea o teu axudante de acción:
      <? PHP
     / **
      * Establece o camiño do esquema nunha base por módulo
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Desde 2010/01/01
      * /
     Pro_Controller_Action_Helper_SetLayoutPath clase
         esténdese Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Establece o camiño do esquema baseado no módulo
          * /
         preDispatch función pública ()
         {
        	 $ Module GetRequest = $ this-> () -> getModuleName ();
    
    	     if ($ inicio getActionController = $ this-> ()
    	                        -> GetInvokeArg ('inicio')) {
    
    	         $ Config = $ getOptions inicio-> ();
    
    	         if (isset ($ config ['layout'] [$ módulo] ['recursos'] ['layoutPath'])) {
    	             LayoutPath $ =
    	                  $ Config [$ módulo] ['layout'] ['recursos'] ['layoutPath'];
    	             getActionController $ this-> ()
    	                  -> GetHelper ('layout')
    	                  - SetLayoutPath> ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. E, por último arrincar o auxiliar de acción:
      ...
         / **
          * Configura scripts de deseño nunha base por módulo
          * /
         _initLayoutHelper función protexida ()
    	 {
    	     $ This-> inicio ("frontController ');
    	     $ Esquema = Zend_Controller_Action_HelperBroker: addHelper (
    	         nova Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

4 Responses to "Zend Framework por módulo opcións baseadas"

  1. Behrang di:

    Ola gracias ao seu primeiro tutorial útil, pero di-me onde podo crear auxiliar de acción co nome de arquivo bruxa?
    Behrang

  2. Ola Behrang, crear o auxiliar de acción con calquera nome que queres, eu teño a miña "biblioteca" con espazo propio 'Pro'. Podería facilmente chamar de "SetLayoutPath 'da clase e poñelas onde queira, sempre que o código pode atopo la e extender as clases obrigatorias

  3. Kantha Shashi di:

    Ola, ían confundido coa creación de configuración do módulo de base de datos específica ... Alguén ten unha idea?

  4. Creo que isto podería ser facilmente alcanzado usign o estándar anterior. En primeiro lugar, crear opcións no seu arquivo ini xunto os arquivos:

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

    Deste xeito, só xerar a súa base de datos conexión como pensar mellor (Zend_Db:: factory () ou similar) e almacena-lo apartado no rexistro ou define-lo como o adaptador estándar se está a usar Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).

Deixe unha resposta













Panorama Tema por Themocracy

9 convidados en liña agora
8 persoas, 1 bots, 0 membros
Max visitantes hoxe: 12 ás 01:03 UTC
Este mes: 26 en 2011/07/05 12:35 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC