Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour, je débute sous Zend Framework, et en suivant un tutoriel, j'ai un problème pour l'autoload des modeles.
Voici mon index.php :
<?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 1); date_default_timezone_set('Europe/Paris'); define('APPLICATION_PATH', realpath(dirname(__FILE__))); set_include_path( PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models' . PATH_SEPARATOR . get_include_path()); // Autoloader require_once 'Zend/Loader/Autoloader.php'; $autoloader = Zend_Loader_Autoloader::getInstance(); // Chargement de la configuration $config = new Zend_Config_Ini('../application/configs/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('../application/controllers'); Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts')); // run! $frontController->dispatch();
Et mon Controller index :
<?php class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->title = "Mes albums"; $album = new Model_DbTable_Albums(); }
Et enfin, mon modele Albums.php, qui se trouve dans public/application/modeles/DbTable/
<?php class Model_DbTable_Albums extends Zend_Db_Table { protected $_name = 'albums'; }
L'erreur est qu'il ne trouve pas ma class Model_DbTable_Albums, alors que normalement il devrait l'auto-charger.
Si je met ceci au début du controller Index :
include "../application/models/DbTable/Albums.php";
Ca fonctionne -logique-
Donc le problème doit être dans mon index.php, mais je n'arrive pas à trouver où ... :'(
Hors ligne
Ya rien de logique dans tout ce que tu dis lol xD
Si tu fais :
include "../application/models/DbTable/Albums.php";
alors que ton chemin est d'après toi
public/application/modeles/DbTable/
donc déjà sa colle pas
Et ensuite encore un truc incohérent, tu nomme ta classe :
Model_DbTable_Albums
encore une nouvelle façon d'écrire modèle?
Il faut choisir, soit 'model', 'models', 'modele' ou 'modeles' mais pas les quatre xD
Ensuite si l'on suis la convention de nommage des classes --> http://zendframework.com/manual/fr/codi … tions.html
On devrait donc avoir : Application_Modeles_DbTable_Albums si ton chemin est application/modeles/DbTable/Albums.php
Voila, ensuite j'ai pas regarder ton index.php mais essai déjà de corriger ça
Hors ligne
Pardon faute de frappe mon chemin est bien "public/application/models/DbTable", donc pas de soucis dessus.
Sinon il me semble que l'Autoloader gére "Model" pour le dossier "models"?
EDIT: J'ai essayé "Application_Model_DbTable_Albums" ( Models aussi ), mais rien à faire :
Fatal error: Class 'Application_Model_DbTable_Albums' not found in C:\wamp\www\tutoriel-zf\application\controllers\IndexController.php on line 12
Dernière modification par syntaxlb (02-07-2010 10:13:57)
Hors ligne
Bon j'ai régler le problème en utilisant Zend_Application
Hors ligne
Bonjour,
comment avez-vous fait exactement pour résoudre le problème car j'ai le même soucis !!
merci d'avance.
Hors ligne
Bonjour,
fait un tour sur la doc : http://framework.zend.com/manual/fr/zen … art.manual
Hors ligne