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