Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'essaie de faire une application modulaire avec un bootstrap par module.
Mon front controller voit bien mes 2 modules, ils fonctionne tous les deux a une exception près !
Le bootstrap du module ne ce charge pas !!?
pourtant mon bootstrap herite bien de la class Zend_Application_Module_Bootstrap
D'après les différent tuto que j'ai lu il faut activer le Zend_Application_Resource_Modules grâce à : resources.modules[] = "" (à mettre dans le fichier ini).
voici mon bootstrap de base:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function run() { Zend_Registry::set('config', new Zend_Config($this->getOptions())); parent::run(); } protected function _initDefaultNamespace() { $this->bootstrap('frontcontroller'); $fc = $this->getResource('frontcontroller'); $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule()); new Zend_Application_Module_Autoloader(array( 'namespace' => '', // pas de namespace 'basePath' => APPLICATION_PATH . $defaultModule, )); } }
et mon fichier de conf :
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" ;DECLARATION APP MODULAIRE resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules[] = "" resources.frontController.defaultControllerName = "index" resources.frontController.defaultActionName = "index" ;PAS NECESSAIRE CAR APPLICATION MODULAIRE ;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" ;DECLARATION LAYOUT PAR MODULE resources.layout.layout = "layout"
Merci
Hors ligne
jfrag a écrit:
Mon front controller voit bien mes 2 modules, ils fonctionne tous les deux a une exception près !
Le bootstrap du module ne ce charge pas !!?
Qu'entends tu par "Le bootstrap du module ne ce charge pas" ? Tu es au courant que les 2 bootstraps seront utilisés ?
Peux-tu préciser que je puisse regarder ?
Hors ligne
bah le bootstrap général ce charge mais pas celui du module
Hors ligne
Salut,
Tu peux nous montrer le bootstrap du module en question ?
A+ benjamin.
Hors ligne
<?php class Admin_Bootstrap extends Zend_Application_Module_Bootstrap { public function __construct($application) { parent::__construct($application); Zend_Debug::dump('cool'); echo 'ICI'; } protected function _initViewHelpers() { $this->bootstrap('layout'); Zend_Debug::dump('encule'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=UTF-8'); $view->headTitle()->setSeparator(' / '); $view->headTitle('Ecia'); $view->headLink()->appendStylesheet('/css/style.css'); Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml'); } protected function _initDb() { $configDb = new Zend_Config($this->getOptions()); try{ $db = Zend_Db::factory($configDb->resources->db); $db->setFetchMode(Zend_Db::FETCH_OBJ); Zend_Db_Table::setDefaultAdapter($db); $db->getConnection(); }catch ( Exception $e ) { exit( $e -> getMessage() ); } Zend_Registry::set('db', $db ); $db->query('SET NAMES UTF8'); return $db; } protected function _initNavigation() { $view = $this->bootstrap('layout')->getResource('layout')->getView(); $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $view->navigation(new Zend_Navigation($config)); } protected function _initSession() { Zend_Session::start(); } }
lorsque je fais un getExecutedBootstraps();
il me retourne un tableau d'objet vide :
object(ArrayObject)#5 (1) { ["storage":"ArrayObject":private] => array(0) { } }
Hors ligne
J'ai trouvé pourquoi mon boostrap de module n'etait pas chargé !!
dans mon bootstrap principal je recuperé une instance du frontController et ca faisait tout planté :
protected function _initGetFront(){ $frontController = Zend_Controller_Front::getInstance(); }
mais alors maintenant c'est vraiment bizarre car que je soit dans le module admin ou default il me charge le bootstrap admin !! je n'y comprend plus rien
Hors ligne
Je crois que je vais devenir fou !!
lorsque j'accede a un module le framework defini toute mes route pour les 2 modules !! (je trouve completement con)
Il me charge tous les bootstraps (exemple j'accede au module admin il me charge aussi le bootstrap du module default) ou est l'interet d'avoir un bootstrap par module ??
dernier point impossible d'atteindre mon layout dans le bootstrap de mon module pour definir le doctype ou le headtitle !!
Je commence a me psé des question sur l'optimisation du framework car il charge tout et n'importe quoi
Hors ligne
jfrag a écrit:
Je crois que je vais devenir fou !!
lorsque j'accede a un module le framework defini toute mes route pour les 2 modules !! (je trouve completement con)
Il me charge tous les bootstraps (exemple j'accede au module admin il me charge aussi le bootstrap du module default) ou est l'interet d'avoir un bootstrap par module ??
dernier point impossible d'atteindre mon layout dans le bootstrap de mon module pour definir le doctype ou le headtitle !!
Je commence a me psé des question sur l'optimisation du framework car il charge tout et n'importe quoi
yvann a écrit:
jfrag a écrit:
Mon front controller voit bien mes 2 modules, ils fonctionne tous les deux a une exception près !
Le bootstrap du module ne ce charge pas !!?Qu'entends tu par "Le bootstrap du module ne ce charge pas" ? Tu es au courant que les 2 bootstraps seront utilisés ?
Peux-tu préciser que je puisse regarder ?
C'est ce que je voulais dire par cette phrase. Et ce n'est pas "complètement con", ce n'est juste pas fait pour la situation que tu décris.
Hors ligne
Pour lancer le bootstrap situé à la racine de ton module et nommé Bootstrap.php (Module_Bootstrap)
resources.modules.monmodule1 = "CheminVersLeModule1" resources.modules.monmodule2 = "CheminVersLeModule2" resources.modules.monmodule3 = "CheminVersLeModule3"
Hors ligne