Zend Framework por módulo opcións baseadas
Eu creei unha continuación a este post, que require menos configuración, consulte Esquema de Módulo Based - Zend Framework .
Usando o Zend Framework con módulos, a súa evidente que se está executando varios (sub-) sitios fóra do mesmo programa que non quere necesariamente os mesmos guións de deseño para cada parte. Eu decidimos ir coa estrutura seguinte sitio web:
/ Aplicación / Controladores ... / Modelos / Modules / Default / Controladores / Deseño / Scripts / Views / Scripts / AnotherModule ... / Scripts
O problema foi a creación dos scripts de deseño nunha base por módulo. A resposta veu a través da utilización de un auxiliar de acción. Configurar os esquemas nunha base por módulo implica tres pasos:
- Application.ini (ou setup de configuración similar):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / esquemas / scripts" default.resources.layout.layoutPath = APPLICATION_PATH "/ módulos / default / esquemas / scripts" member.resources.layout.layoutPath = APPLICATION_PATH "/ modules / membros / esquemas / scripts" affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ modules / afiliados / esquemas / scripts"
- Crea o teu axudante de acción:
<? PHP / ** * Define o camiño de deseño nunha base por módulo * * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Since 2010/01/01 * / clase Pro_Controller_Action_Helper_SetLayoutPath estende Zend_Controller_Action_Helper_Abstract { / ** * Camiño Esquema define a base do módulo * / preDispatch función pública () { $ Module = $ this-> GetRequest () -> getModuleName (); se (bootstrap $ = $ this-> getActionController () -> GetInvokeArg ("bootstrap")) { $ Config = bootstrap-> $ getOptions (); if (isset ($ config [$ módulo] ['recursos'] ['esquema'] ['layoutPath'])) { $ LayoutPath = [Module $] $ config ['recursos'] ['esquema'] ['layoutPath']; $ This-> getActionController () -> GetHelper ('layout') -> SetLayoutPath ($ layoutPath); } } } }
- E, por último boostrap o auxiliar de acción:
... / ** * Define os scripts de deseño nunha base por módulo * / protexido función _initLayoutHelper () { $ This-> inicio ("frontController '); $ Deseño = Zend_Controller_Action_HelperBroker :: addHelper ( nova Pro_Controller_Action_Helper_SetLayoutPath ()); } ...

















































