Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-11-2009 14:45:45

toddoon
Nouveau membre
Date d'inscription: 26-10-2009
Messages: 3

Bootstrap dans module admin ou default genere une boucle infinie

Bonjour,

J'ai essayé de créer une application avec des modules, ceux-ci sont naturellement dans le repertoire /modules de mon application. Ensuite j'ai mis un fichier Bootstrap.php par module. Le problème est quand je met ce fichier dans des modules dits 'modules par défaut' comme 'default' ou 'admin'. Je suppose peut-etre à tort que ces derniers ont déjà un autoloader de configurer et ainsi quand j'ajoute mon Bootstrap.php il s'appelle récursivement. En tout cas je n'ai pas trouvé de solution pour créer un fichier Bootstrap.php dans ces deux modules sans que cela génére une erreur.

Voici le message d'erreur que j'obtiens:

Fatal error: Maximum function nesting level of '100' reached, aborting!

voici quelques uns de mes fichiers

Code:

; application/configs/application.ini

[production]
; PHP settings we want to initialize
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

; frontcontroller resources
resources.frontController.plugins.access = "Plugin_Access"
; resources.frontController.plugins.layout = "Plugin_Title"
resources.frontController.throwException = true;
resources.view[] =
resources.modules = ""
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.controllerDirectory.default = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.controllerDirectory.admin   = APPLICATION_PATH "/modules/admin/controllers"
resources.frontController.controllerDirectory.xml     = APPLICATION_PATH "/modules/xml/controllers"
resources.frontController.controllerDirectory.note    = APPLICATION_PATH "/modules/note/controllers"



; so auto-loading will find our classes in library/App
autoloaderNamespaces[] = "My_"

; set our language
resources.translate.registry_key = "Zend_Translate"
resources.translate.adapter = "array"
resources.translate.options.scan = "directory"
resources.translate.data = APPLICATION_PATH "/lang/"

; layout
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

Code:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => dirname(__FILE__),
        ));

        return $autoloader;
        

    }

    protected function _initDoctype()
    {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->headTitle()->setSeparator(' - ')
                          ->append('Retrodoc ' . APPLICATION_ENV);
        $view->headMeta()->appendHttpEquiv('Content-Type', 'application/xhtml+xml; charset=utf-8');

        $view->doctype('XHTML1_STRICT');
        
        ZendX_JQuery::enableView($view);
        
        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
        $viewRenderer->setView($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
        
        
    }
    
    protected function _initAuth()
    {
        $auth = Zend_Auth::getInstance(); 
    }

    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 _initUserInformations()    {
        $session = new Zend_Session_Namespace('User');
        
        // $session->id = 
    }
    
    protected function _initPlugins()    {
        // register plugins
        $frontController = Zend_Controller_Front::getInstance();
        $dbAdapter = Zend_Registry::get('dbAdapter');
        
        // $pluginDebug = new My_Plugin_Debug(array('database_adapter'  => $dbAdapter, 'memory_usage'      => true, 'collect_view_vars' => true));
    }
    
    protected function _initFireBugPhp()    {
        $writer = new Zend_Log_Writer_Firebug();
        $logger = new Zend_Log($writer);
        Zend_Registry::set('logger',$logger);
    }
    
}

Hors ligne

 

#2 19-11-2009 09:37:56

toddoon
Nouveau membre
Date d'inscription: 26-10-2009
Messages: 3

Re: Bootstrap dans module admin ou default genere une boucle infinie

Je rajoute une petite précision: apparemment il m'est impossible de mettre plus d'un fichier Bootstrap dans le répertoire /modules. Dans l'arborescence suivante j'ai essayé de mettre un Bootstrap dans le module note et un autre dans le module xml. Cela m'a automatiquement entrainé l'erreur détaillée précédement (infinite loop). En renommant le Bootstrap dans un des modules ou en le supprimant je n'ai plus l'erreur.
Est t-il possible de mettre plusieurs fichiers Bootstrap dans le répertoire module, dois-je plutot configurer mes modules via le Bootstrap principal? Merci de m'éclairer.

application/modules/
|-- admin
|   |-- controllers
|   |-- models
|   `-- views
|       |-- filters
|       |-- helpers
|       `-- scripts
|-- default
|   |-- controllers
|   |   |-- ErrorController.php
|   |   |-- IndexController.php
|   |   `-- LoginController.php
|   |-- forms
|   |   `-- Login.php
|   |-- models
|   `-- views
|       |-- filters
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   |-- error.phtml
|           |   `-- index.phtml
|           |-- index
|           |   `-- index.phtml
|           `-- login
|               |-- index.phtml
|               `-- login.phtml
|-- note
|   |-- Bootstrap.php.bak
|   |-- controllers
|   |-- models
|   `-- views
|       |-- filters
|       |-- helpers
|       `-- scripts
`-- xml
    |-- Bootstrap.php
    |-- controllers
    |-- models
    `-- views
        |-- filters
        |-- helpers
        `-- scripts

32 directories, 11 files

Hors ligne

 

#3 19-11-2009 12:02:05

toddoon
Nouveau membre
Date d'inscription: 26-10-2009
Messages: 3

Re: Bootstrap dans module admin ou default genere une boucle infinie

J'ai finalement abandonné l'idée de créer un Bootstrap par module et me suis rabattu sur la configuration de mes modules via le Bootstrap.php principal. Au cas où je vous montre le code:

Code:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {

        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '_',
            'basePath' => APPLICATION_PATH));
                    
        $defaultloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath' => APPLICATION_PATH . '/modules/default/'));
        
        $adminloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Admin_',
            'basePath' => APPLICATION_PATH . '/modules/admin/'));
        
        $xmlloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Xml_',
            'basePath' => APPLICATION_PATH . '/modules/xml/'));
            
        $noteloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Note_',
            'basePath' => APPLICATION_PATH . '/modules/note/'));

    }
}

Voilà c'est résolu

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