Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-11-2009 15:57:58

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

[Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Bonjour,
J'ai un petit soucis avec mon application.
J'ai essayé de mettre ne place une architecture modulaire.  (architecture normale, rien d'exotique)
Pour le moment mon application marchait bien car j'avais un unique Bootstrap.

Depuis quelques jour je tente de construire un Bootstrap par module pour que l'initialisation de chaque modules soit complètement dissocié.

Au premier abord tout fonctionne bien, le petit bémol c'est que j'ai essayé de regarder si le bootstrap du module appelé était effectivement bien appelé (et pas un autre). Finalement, je me suis rendu compte que l'ensemble des bootstrap de mes modules étaient exécute!

Voici une partie de mon application.ini :

Code:

[production]
phpSettings.display_startup_errors          = 0
phpSettings.display_errors                  = 0
phpSettings.date.timezone                   = "Europe/Paris"
includePaths.library                        = APPLICATION_PATH "/../library"
bootstrap.path                              = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class                             = "Bootstrap"
cache.timecache                             = 0
resources.modules[] = ""
resources.frontController.defaultModule     = default
resources.frontController.controllerDirectory.default   = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.controllerDirectory.calcul   = APPLICATION_PATH "/modules/calcul/controllers"
resources.frontController.controllerDirectory.essai   = APPLICATION_PATH "/modules/essai/controllers"
resources.layout.layoutpath         = APPLICATION_PATH "/layouts/scripts/"

Merci d'avance

Phil

Dernière modification par Phil (05-11-2009 10:50:55)

Hors ligne

 

#2 04-11-2009 17:36:38

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Re

Pour le moment j'ai pu redéfinir le plugin pour le chargement des bootstrap du module, cela vous aidera à mieux comprendre mon problème.

Voici le code de mon plugin pour le boostrap modulaire :

Code:

<?php
/**
 * Chargement de boostrap d'un module
 * @category    My
 * @package     My
 * @subpackage  My_Application
 */
class My_Application_Resource_Modules
    extends Zend_Application_Resource_Modules
{
    /**
     * Initialisation du module
     * @return array
     */
    public function init(){
        //Recupération du module en cours
        $uri = $_SERVER["REQUEST_URI"];
        $tabUri = explode('/', $uri);
        $bootstrap = $this->getBootstrap();
        $bootstrap->bootstrap('FrontController');
        $front = $bootstrap->getResource('FrontController');
        $module = $tabUri[1];
        if (!$front->getModuleDirectory($module)){
            $module = $front->getDefaultModule();
        }
        //Chargement du bootstrap du module
        $modulesDirs = $front->getControllerDirectory();
        $modulePath =  dirname($modulesDirs[$module]).'/Bootstrap.php';
        include_once $modulePath;
        $moduleName = $this->_formatModuleName($module);
        $bootstrapClass = $moduleName.'_Bootstrap';
        
        //Execution
        $moduleBoostrap = new $bootstrapClass($bootstrap);
        $moduleBoostrap->bootstrap();
        return $this->_bootstraps[$module] = $moduleBootstrap;
    }
}

et biensur j'ai du faire des petites modifications sur mon application.ini :

Code:

[production]
phpSettings.display_startup_errors          = 0
phpSettings.display_errors                  = 0
phpSettings.date.timezone                   = "Europe/Paris"
includePaths.library                        = APPLICATION_PATH "/../library"
bootstrap.path                              = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class                             = "Bootstrap"
cache.timecache                             = 0
resources.modules[] = ""
pluginPaths.My_Application_Resource      = APPLICATION_PATH "/library/My/Application/Resource"
resources.frontController.defaultModule     = default
resources.frontController.controllerDirectory.default   = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.controllerDirectory.calcul   = APPLICATION_PATH "/modules/calcul/controllers"
resources.frontController.controllerDirectory.essai   = APPLICATION_PATH "/modules/essai/controllers"
default.resources.layout.layoutpath         = APPLICATION_PATH "/layouts/scripts/"

Voilà ce n'est qu'un brouillon pour le moment.

Si vous connaissez la solution 'Native' du Framework pour faire la même chose...
Je suis preneur!

Merci @++ Phil

Dernière modification par Phil (04-11-2009 17:39:37)

Hors ligne

 

#3 04-11-2009 18:24:57

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

il me semble que dans les explications de zend, en natif le bootstrap principal exécute tous les boostrap de module pour trouver le bon. Je peux bien sûr me tromper.

Hors ligne

 

#4 04-11-2009 18:38:36

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

@thorin19 : c bien ça

Tous les bootstraps de modules sont parcourus. Car à cet instant précis, le routage n'a pas encore été effectué donc le module courant n'est pas connu.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 05-11-2009 08:37:59

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Ok, donc je suis obligé d'utiliser ma solution pour séparer l'exécution de chacun des bootstrap...
Il n'y a pas d'autre alternative...?

Hors ligne

 

#6 05-11-2009 09:33:42

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Je n'ai pas bien compris ton problème. Pourquoi faire un micro-routage avant le routage ? Qu'est-ce qui t'empêche de charger toutes tes ressources de modules ?


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 05-11-2009 09:45:31

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

En fait je veux séparer mon application dans un module, et dans un autre la partie exécutée en ligne de commande (la partie calcul). Or je ne souhaite pas que certaines fonctions de mon bootstrap soient éxécutées.

Si je laisse le plugin de chargement des modules tel quel... J'ai le layout du module de default qui vient parasiter le module de calcul (ou je n'ai pas définit le layout).

Je pense que c'est plus logique que chacun des module ait seulement son Bootstrap d'éxecuté et non pas l'ensemble des bootstrap..

et que la partie commune soit définie uniquement dans le Bootstrap principal.

Enfin je me trompe peut être ^^'

Dernière modification par Phil (05-11-2009 09:49:09)

Hors ligne

 

#8 05-11-2009 10:03:15

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Dans un cas similaire (grosso-modo), j'ai 2 points d'entrée l'index.php qui charge la partie "Web" et dans un dossier hors web update.php qui s'occupe de la partie mise à jour en ligne de commande.

Ces 2 fichiers appellent le même Bootstrap.php mais chargent les ressources différemment.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#9 05-11-2009 10:09:52

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

C'est ce que j'ai... j'ai créé un cli.php pour s'occuper de la ligne de commande. et je rentre à l'aide d'un bootstrap identique. Je ne comprend pas pourquoi le layout du module par défaut parasite l'autre...

Dernière modification par Phil (05-11-2009 10:12:56)

Hors ligne

 

#10 05-11-2009 10:14:50

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Même bootstrap ne veut pas dire pour moi, même application.ini. Pour la partie cli, je ne charge pas toutes les ressources de la partie Web seulement celles qui sont nécessaires.


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#11 05-11-2009 10:49:43

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: [Résolu][ZF 1.9.5][BOOTSRTAP] Bootstrap de module

Hum c'est donc ça l'astuce ^^!
J'vais essayer de revoir mon archi smile
Merci ^^

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages