Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
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 :
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
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
Hors ligne
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 :
<?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