Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-07-2009 14:00:21

Diaoul
Membre
Date d'inscription: 28-06-2009
Messages: 13
Site web

Autoloader, ressources et sous-dossiers

Salut à tous,

J'ai revu un peu l'organisation de mes  répertoires et je me heurte à un problème d'autoloading :

Dans mon bootstrap :

Code:

    protected function _initAutoload()
    {
        $moduleAutoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH)
        );

        return $moduleAutoloader;
    }

J'ai par ailleurs mis mes formulaires de login et logout dans un sous dossier auth.
Je les ai renommé Form_Auth_Login et Form_Auth_Logout.

Seulement j'ai un problème d'autoload :

Code:

Warning: include(/blablabla/application/forms//Auth/Login.php) [function.include]: failed to open stream: No such file or directory in /blablabla/library/Zend/Loader/Autoloader/Resource.php on line 173

J'ai bien l'impression qu'il essaye d'aller chercher le formulaire là ou il faut mais il rajoute bêtement un /.

Une idée ?
Je souhaite évidemment éviter de rajouter les ressources (sous-dossier) une par une dans l'autoloader.

Merci

Hors ligne

 

#2 06-07-2009 09:34:08

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Autoloader, ressources et sous-dossiers

Je ne vois aucun rapport entre module_autoloader et le chargement de Form_XX_XX ...

Pour chargé tout ce qui comment par Form_ il faut déclarer Form_ avec le répertoire qui contient les forms


----
Gruiiik !

Hors ligne

 

#3 06-07-2009 18:22:45

Diaoul
Membre
Date d'inscription: 28-06-2009
Messages: 13
Site web

Re: Autoloader, ressources et sous-dossiers

Le lien c'est qu'en fait, Zend_Application_Module_Autoloader étend Zend_Loader_Autoloader_Resource et déclare des ressources par défaut, dont "Form" pour ce qui me concerne.
Du coup, la ressource étant déclarée, je ne comprends pas pourquoi l'autoload ne se fait pas.

Voici le code de la classe que j'utilise :

Code:

<?php
class Zend_Application_Module_Autoloader extends Zend_Loader_Autoloader_Resource
{
    /**
     * Constructor
     * 
     * @param  array|Zend_Config $options 
     * @return void
     */
    public function __construct($options)
    {
        parent::__construct($options);
        $this->initDefaultResourceTypes();
    }

    /**
     * Initialize default resource types for module resource classes
     * 
     * @return void
     */
    public function initDefaultResourceTypes()
    {
        $basePath = $this->getBasePath();
        $this->addResourceTypes(array(
            'dbtable' => array(
                'namespace' => 'Model_DbTable',
                'path'      => 'models/DbTable',
            ),
            'form'    => array(
                'namespace' => 'Form',
                'path'      => 'forms',
            ),
            'model'   => array(
                'namespace' => 'Model',
                'path'      => 'models',
            ),
            'plugin'  => array(
                'namespace' => 'Plugin',
                'path'      => 'plugins',
            ),
            'service' => array(
                'namespace' => 'Service',
                'path'      => 'services',
            ),
            'viewhelper' => array(
                'namespace' => 'View_Helper',
                'path'      => 'views/helpers',
            ),
            'viewfilter' => array(
                'namespace' => 'View_Filter',
                'path'      => 'views/filters',
            ),
        ));
        $this->setDefaultResourceType('model');
    }
}

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