IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Module Bootstrap charge même si c'est un autre module appelé [ZF 1.10]


Sujet :

MVC PHP

  1. #1
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut Module Bootstrap charge même si c'est un autre module appelé
    Bonjour à tous,

    Je vous soumets mon problème. J'ai une application contenant 2 modules.
    Mon application contient un bootstrap et chacun de mes 2 modules contiennent également leur propre bootstrap.
    Ce que je ne comprends pas c'est que lorsque je vais en HTTP sur mon module 2, je vois que le boostrap du module 1 est également exécuté.

    Savez-vous comment éviter ceci ?

    Merci

    Boostrap du module 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    class Module1_Bootstrap extends Zend_Application_Module_Bootstrap
    {
        protected function _initView()
        {
            var_dump(1);
        }
     
    }
    Boostrap du module 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    class Module2_Bootstrap extends Zend_Application_Module_Bootstrap
    {
        protected function _initView()
        {
            var_dump(2);
        }
     
    }
    Application.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ; Active les bootstrap des modules
    resources.modules[] = ""

  2. #2
    Rédacteur

    Avatar de arnolem
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 856
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 856
    Points : 6 114
    Points
    6 114
    Par défaut
    Ce fonctionnement est en faite normal car le bootstrap est appelé avant même de connaitre le module chargé. Ce que je veux faire n'est donc pas à gérer dans différents boostrap puisque je ne veux pas qu'ils se chargent tous.
    J'ai donc opté pour un plugin de controller qui définit le layout à utiliser en fonction du module et ainsi, je peux charger les CSS spécifiques.

  3. #3
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    Hello

    je remonte ce sujet, même cas de figure et du coup je ne comprend pas l'intéret d'avoir un bootstrap par module + 1 principal s'ils sont tous exécutes quelque soit le module.

    Parce que un $view->headTitle('my title'); dans le bootstrap du module 1 affichera quand me ce titre dans les autres modules (!)

    Voici ce que j'utilise afin de répartir de layout en fonction du module :
    (app.ini) :
    resources.frontController.plugins.layoutloader = "My_Controller_Plugin_RequestedModuleLayoutLoader"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class My_Controller_Plugin_RequestedModuleLayoutLoader extends Zend_Controller_Plugin_Abstract {
        public function preDispatch(Zend_Controller_Request_Abstract $request) {
            $config     = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOptions();
            $moduleName = $request->getModuleName();
     
            if (isset($config[$moduleName]['resources']['layout'])) {
                Zend_Layout::startMvc($config[$moduleName]['resources']['layout']);
            }
        }
    }
    Comment fonctionner ?


  4. #4
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Comment fonctionner ?
    Comment ça ?

  5. #5
    Membre du Club Avatar de kreatik
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 62
    Points
    62
    Par défaut
    Le but étant d'avoir deux modules bien séparés. Aussi, par exemple quand je fait un set flashMessenger dans un controller de module1, le message peut également s’afficher sur le module2 or ce n'est pas vraiment mon souhait


  6. #6
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Les bootstrap sont indépendant des modules, ces derniers permettent de pouvoir trouver tel ou tel ressource de ton applications, sans ça il serait impossible de localiser des ressources s trouvant dans un module différent.

    Après tu n'est pas obligé d'utiliser l'autoloader et de faire toit même ce que tu veux, c'est l'avantage de zend qui n'impose rien mais propose et tu dispose.

    Par contre si tu fais un flashMessenger sur un controller d'un module ça ne s'affichera par dans un autre module à moins d'appeler celui ci explicitement, il ne faut pas confondre bootstrap est controller.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 30/01/2008, 18h23
  2. Réponses: 17
    Dernier message: 28/05/2007, 17h55
  3. [Module] netbeans et les dlls c'est pas au point
    Par eclesia dans le forum NetBeans
    Réponses: 3
    Dernier message: 04/03/2007, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo