Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjours,
Je viens de mettre en place un syteme modulaire qui fonctionne bien.
Sauf que pour la peine, quand je veux cherher une classe sa marche pas avec le message d'erreur qui va avec.
Voici mon Bootstrap principale :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function run() { // Cela permet d'avoir la configuration disponible de partout dans notre application Zend_Registry::set('config', new Zend_Config($this->getOptions())); parent::run(); } protected function _initDefaultNamespace() { $this->bootstrap('frontcontroller'); $fc = $this->getResource('frontcontroller'); $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule()); new Zend_Application_Module_Autoloader(array( 'namespace' => '', // pas de namespace 'basePath' => APPLICATION_PATH . $defaultModule, )); } protected function _initView() { // Initialize view $view = new Zend_View(); $view->doctype('XHTML1_STRICT'); $view->headTitle('Ma premiere application avec Zend'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-1'); // Add it to the ViewRenderer $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); // Return it, so that it can be stored by the bootstrap return $view; } }
Donc dans modules/default/controllers/IndexController.php
<?php class IndexController extends Zend_Controller_Action { public function init() { $this->view->headTitle('Mon application avec Zend_Application (Utilisateur par défaut)'); } public function indexAction() { $this->_response->appendBody('Bievenue'); } public function testAction() { $tuto1 = new Model_Tuto1(); $this->view->tabTuto1 = $tuto1->find(); } }
Et le model Tuto1.php dans modules/default/model/Tuto1.php
<?php class Model_Tuto1 { private $dbTable; private $id; private $fr; private $en; public function __construct( $id = false ) { $this->dbTable = new Model_DbTable_Tuto1(); if($id) { $tmp = $this->dbTable->getTuto1($id); $this->id = $tmp['id_tuto1']; $this->fr = $tmp['fr']; $this->en = $tmp['en']; } } /* * GET & SET */ public function getDbTable() { return $this->dbTable; } public function getId() { return $this->id; } public function getFr() { return $this->fr; } public function getEn() { return $this->en; } public function setId($id) { $this->id = id; } public function setFr($fr) { $this->fr = $fr; } public function setEn($en) { $this->en = $en; } public function add() { return $this->dbTable->ajouter(array('fr' => $this->fr, 'en' => $this->en)); } public function update() { $this->dbTable->maj(array('id' => $this->id, 'fr' => $this->fr, 'en' => $this->en)); } public function delete() { $this->dbTable->supprimer($this->id); } public function find($tab = false) { $results = $this->dbTable->find($tab); foreach($results as $r) { $ret[] = new Model_Tuto1($r['id_tuto1']); } return $ret; } }
Donc on voit bien je veux instancier ma classe.
Mais lorque ce je vais sur le site sa dit classe introuvable.
Est un probleme de "autoloader" ?
Comment regler mon probleme ?
Fatal error: Class 'Model_Tuto1' not found in C:\wamp\www\tuto\application\modules\default\controllers\IndexController.php on line 16
merci
Hors ligne
Bonjour,
Je pense déjà que ta classe ne porte pas le bon nom. Si elle se trouve dans /application/modules/default/models/ son nom devrait être Default_Model_Tuto1, sauf si ton application.ini contient les informations suivantes :
; initialize front controller resource resources.frontController.defaultControllerName = "Index" resources.frontController.defaultAction = "index" resources.frontController.defaultModule = "default" resources.frontController.params.prefixDefaultModule = 0 resources.modules[] = ""
Dans ce cas là, avec prefixDefaultModule à faux, plus besoin de se soucier du nom du module dans default.
Ensuite pour le chargement, tu dois utiliser un bootstrap par module.
[lang=php] class Default_Bootstrap extends Zend_Application_Module_Bootstrap { }
Et ce pour chaque module (/application/modules/*/Bootstrap.php).
Hors ligne