Zend Framework por módulo opcións baseadas
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:
- 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"
- 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); } } } }
- 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 ()); } ...


















































Ola gracias ao seu primeiro tutorial útil, pero di-me onde podo crear auxiliar de acción co nome de arquivo bruxa?
Behrang
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
Ola, ían confundido coa creación de configuración do módulo de base de datos específica ... Alguén ten unha idea?
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 ()).