Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir,
J'ai un petit soucis sur l'auto-chargement d'une class se trouvant dans le dossier forms de mon application.
Voici pour commencer la structure de mon appli :
Les champs de mon formulaire sont paramétrés dans la fonction init() de la class
class Core_forms_CreateUser extends Zend_Form { ... }
Elle se situe dans application/Core/forms/CreateUser.php
J'instancie cette class dans mon controller Login, via l'action create :
public function createAction() { $form = new Core_forms_CreateUser(); }
Malheureusement, à l'éxécution, çà me sort une erreur :
Fatal error: Class 'Core_forms_CreateUser' not found in /home/kcin/www/TNA/application/Core/controllers/LoginController.php on line 47
Mais dès que je mets un require_once avant l'instanciation, çà fonctionne.
Que me manque t'il, ou plutôt sur quoi Zend bloque pour ne pas réussir à comprendre Core_forms_CreateUser en Core/forms/CreateUser.php ?
Merci beaucoup.
Dernière modification par NicoC (10-11-2012 20:00:11)
Hors ligne
Tu n'as pas une architecture standard. Nommer une classe avec des minuscules dans son nom est une mauvaise pratique.
A quoi ressemble ton application.ini et ton Bootstrap.php ?
Hors ligne
En ce qui concerne le nom de la class, même avec des majuscules, çà fonctionne pas (Core_Forms_CreateUser)
Application.ini
Certains éléments sont pas nécessaire. Je les ai pas encore retiré.
[production] phpSettings.display_errors = 0 includePaths.library = ROOT_PATH "/library" bootstrap.class = Bootstrap bootstrap.path = ROOT_PATH "/application/Bootstrap.php" appnamespace = App pluginPaths.My_Application_Resource = ROOT_PATH "/library" resources.frontController.defaultModule = Core resources.frontController.controllerDirectory = ROOT_PATH "/application/Core/controllers" resources.frontController.moduleDirectory = ROOT_PATH "/application" resources.modules[] = resources.layout.layout = layout resources.layout.layoutPath = ROOT_PATH "/application/Core/views/layouts" resources.view.doctype = XHTML1_TRANSITIONAL resources.cachemanager.front.frontend.name = "Core" resources.cachemanager.front.frontend.options.caching = 1 resources.cachemanager.front.frontend.options.lifetime = 7200 resources.cachemanager.front.frontend.options.automatic_serialization = 1 resources.cachemanager.front.backend.name = "ZendServer_Disk" resources.cachemanager.metadata.frontend.name = "Core" resources.cachemanager.metadata.frontend.options.caching = 1 resources.cachemanager.metadata.frontend.options.lifetime = "86400" resources.cachemanager.metadata.frontend.options.automatic_serialization = 1 resources.cachemanager.metadata.backend.name = "ZendServer_Disk" resources.cachemanager.i18n.frontend.name = "Core" resources.cachemanager.i18n.frontend.options.caching = 0 resources.cachemanager.i18n.frontend.options.lifetime = 86400 resources.cachemanager.i18n.frontend.options.automatic_serialization = 1 resources.cachemanager.i18n.backend.name = "ZendServer_Disk" resources.locale.cache = i18n resources.translate.adapter = array resources.translate.data = ROOT_PATH "/application/Core/i18n" resources.translate.locale = browser resources.translate.options.scan = directory resources.translate.options.disableNotices = 1 resources.translate.cache = i18n resources.log.stream.writerName = Stream resources.log.stream.writerParams.stream = ROOT_PATH "/data/log/error.log" enableAutoloaderCache = 1 [development : production] phpSettings.display_errors = 1 enableAutoloaderCache = 0 resources.log.firebug.writerName = Firebug [testing : production] phpSettings.display_errors = 1 resources.translate.locale = fr resources.frontController.returnResponse = true resources.cachemanager.i18n.frontend.options.caching = 0 resources.cachemanager.metadata.frontend.options.caching = 0 resources.cachemanager.cache.frontend.options.caching = 0 resources.log.stream.writerName = "Null" [staging : production]
Bootstrap application :
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDefaultTranslation() { if (!$this->hasResource('locale')) { $this->bootstrap('locale'); } if (!$this->hasResource('translate')) { $this->bootstrap('translate'); } $language = $this->getResource('locale')->getLanguage(); $translate = $this->getResource('translate'); if (!$translate->isAvailable($language)) { $translate->setLocale('fr'); } $writer = new Zend_Log_Writer_Stream( ROOT_PATH . '/data/log/untranslated.log' ); $logger = new Zend_Log($writer); $translate->setOptions( array( 'log' => $logger, 'logUntranslated' => true ) ); } protected function _initAutoloaderCache() { $enabled = (bool) $this->getOption('enableAutoloaderCache'); if ($enabled) { $file = ROOT_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'loaderCache.php'; if (file_exists($file)) { require_once $file; } Zend_Loader_PluginLoader::setIncludeFileCache($file); } } }
Bootstrap module :
<?php class Core_Bootstrap extends Zend_Application_Module_Bootstrap { protected function _initLoadNavConfig() { $navConfig = new Zend_Config_Ini( ROOT_PATH . DIRECTORY_SEPARATOR . 'application' . DIRECTORY_SEPARATOR . 'Core' . DIRECTORY_SEPARATOR . 'configs' . DIRECTORY_SEPARATOR . 'navigation.ini', APPLICATION_ENV ); $nav = new Zend_Navigation($navConfig); Zend_Registry::set('Zend_Navigation', $nav); } protected function _initRouter() { $routeConfig = new Zend_Config_Ini( ROOT_PATH . DIRECTORY_SEPARATOR . 'application' . DIRECTORY_SEPARATOR . 'Core' . DIRECTORY_SEPARATOR . 'configs' . DIRECTORY_SEPARATOR . 'routes.ini', APPLICATION_ENV ); Zend_Controller_Front::getInstance() ->getRouter() ->addConfig($routeConfig, 'routes'); } }
Hors ligne
C'est bon, j'ai compris mon erreur >.>
class Core_Form_CreateUser extends Zend_Form { ... }
public function createAction() { $form = new Core_Form_CreateUser(); }
Hors ligne