Zend Framework par module en fonction des paramètres

Par Steven Lloyd Watkin , vendredi 1er Janvier 2010 22h40

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:

  1. 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" 
  2. 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);
    	         }
        	 }
         }
     } 
  3. 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 ());
    	 }
     ... 

4 Responses to "Zend Framework par module en fonction des paramètres"

  1. Behrang dit:

    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

  2. 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

  3. kanth Shashi a écrit:

    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?

  4. 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 ()).

Laisser un commentaire













Thème par Panorama Themocracy

6 visiteurs en ligne maintenant
3 personnes, 3 bots, 0 membres
Maximum de visiteurs aujourd'hui: 12 à 09:44 UTC
Ce mois-ci: 26 au 05/07/2011 00:35 UTC
Cette année: 130 à 28-03-2011 10:40 pm UTC
Tous les temps: 130 à 28-03-2011 10:40 pm UTC