Zend Framework par module à base de paramètres
J'ai créé un suivi à ce poste qui nécessite moins de configuration, s'il vous plaît voir Mise en module en fonction - Zend Framework .
Lorsque vous utilisez le Zend Framework avec des modules, son évident que si vous utilisez différents (sous-) des sites au large de la même application que vous ne voulez pas nécessairement les mêmes scripts de mise en page pour chaque partie. J'ai décidé d'aller avec la structure du site suivant:
/ Application Régulateurs ... Ou modèles / Modules / Par défaut Régulateurs / Mise en page / Scripts / Views / Scripts / AnotherModule ... / Scripts
Le problème a été mise en place des scripts de mise en page sur une base de chaque module. La réponse est venue par le biais l'aide d'un Helper action. Mise en place des dispositions sur une base par module comporte trois étapes:
- Application.ini (ou procédure de configuration similaire):
admin.resources.layout.layoutPath = APPLICATION_PATH "/ modules / admin / layouts / scripts" default.resources.layout.layoutPath = "/ modules APPLICATION_PATH / default / layouts / scripts" member.resources.layout.layoutPath = "/ modules APPLICATION_PATH / member / layouts / scripts" affiliate.resources.layout.layoutPath = Une APPLICATION_PATH "/ modules / Affilié / layouts / scripts»
- Créer votre Helper action:
<? Php / ** * Définit le chemin tracé sur une base par module * * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk> * @ Since 01.01.2010 * / classe Pro_Controller_Action_Helper_SetLayoutPath s'étend Zend_Controller_Action_Helper_Abstract { / ** * Chemin de mise en page Ensembles basé sur le module * / preDispatch fonction publique () { $ Module = $ this-> getRequest () -> getModuleName (); if ($ bootstrap = $ this-> getActionController () -> GetInvokeArg («bootstrap»)) { $ Config = $ bootstrap-> getOptions (); if (isset ($ config [$ module] ['ressources'] ['layout'] ['layoutPath'])) { LayoutPath $ = [Module $] $ config ['ressources'] ['layout'] ['layoutPath']; $ This-> getActionController () -> GetHelper ("layout") -> SetLayoutPath (layoutPath $); } } } }
- Et enfin boostrap l'aide d'action:
... / ** * Met en place des scripts de mise en page sur une base de chaque module * / protégé fonction _initLayoutHelper () { $ This-> bootstrap ('frontController'); $ Layout = Zend_Controller_Action_HelperBroker :: addHelper ( nouvelle Pro_Controller_Action_Helper_SetLayoutPath ()); } ...

















































