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


















































Salut merci d'abord pour votre utile tutoriel, mais dis-moi où je créer aide d'action avec le nom de fichier aux sorcières?
Behrang
Salut Behrang, créer avec l'aide d'action selon le nom que vous voulez, j'ai mon propre «bibliothèque» avec espace de noms 'Pro'. Vous pourriez tout aussi bien appeler «SetLayoutPath« la classe et le mettre où vous le souhaitez, à condition que le code peut le trouver et vous étendre les classes nécessaires
Salut, iam confondre avec la mise en place du module de base de données des paramètres spécifiques ... Quelqu'un at-il une idée?
Je pense que cela pourrait être aisément réalisée usign le schéma ci-dessus. Tout d'abord, créer des options dans le fichier ini le long des files de:
moduleName.db.user = "
moduleName.db.password = "
moduleName2.db.user = "
... Etc ...
Il vous suffit alors de générer votre connexion base de données comme bon vous semble (Zend_Db:: factory () ou similaire) et il cachette loin dans le registre ou le définir comme l'adaptateur par défaut si vous utilisez Zend_Db_Table (Zend_Db_Table:: setDefaultAdapter ()).