Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Ceci est mon premier post sur ce forum, je débute avec Zend Framework.
Je suis actuellement un tutorial : http://www.youtube.com/profile?user=int … Q1ZFQjffEo
Tutorial 10 part 3.
Je n'arrive pas à charger ma classe Model.
Voici la structure de mon application :
application -configs -layouts -modules --admin --contacts ---controllers ---models ----DbTable ---Views --default
J'ai un Bootstrap.php à la racine de chaque module, ici pour le module Contacts :
class Contacts_Bootstrap extends Zend_Application_Module_Bootstrap { }
Voici le controleur SubscribersController.php :
class Contacts_SubscribersController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } public function listAction() { $subscribersTBL = new Contacts_Model_DbTable_Subscribers(); $this->view->subscribers = $subscribersTBL->fetchAll(); } }
Et le Model Subscribers.php :
class Contacts_Model_DbTable_Subscribers extends Zend_Db_Table_Abstract { protected $_name = 'subscribers'; }
Et voici l'erreur que j'obtiens :
Fatal error: Class 'Contacts_Model_DbTable_Subscribers' not found in E:\www\zfApp\application\modules\contacts\controllers\SubscribersController.php on line 18
Mon index.php :
<?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Et mon application.ini :
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" reources.modules = "" resources.layout.layoutpath = APPLICATION_PATH "/layouts" resources.db.adapter = mysqli resources.db.params.host = localhost resources.db.params.username = xxxxx resources.db.params.password = xxxx resources.db.params.dbname = xxxx [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
J'espère que ça va vous aider pour mon problème!
Hors ligne
Sans ton application.ini tu as
reources.modules = ""
Je te laisse corriger
[edit] en même temps le problème doit pas forcément venir de ça. Mais dis toujours si t'obtiens la même chose après modification
Dernière modification par Bunker (25-11-2009 19:33:21)
Hors ligne
Je ne sais pas ce que je dois mettre dans cette variable, j'ai ça qui est défini juste au dessus :
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
Et deuxièmement quand je regarde le tutoriel, il ne met rien dedans.
Qu'est ce que je dois définir dans cette variable?
Hors ligne
Bonjour,
malheureusement... j'ai exactement le même problème ?
Fatal error: Class 'Admin_Model_DbTable_Pages' not found in /home/iadmin/www/application/modules/admin/controllers/ListController.php on line 15
Ma structure :
App
-- configs
-- layouts
-- modules
-- admin
-- controllers
-- models
-- views
-- default
-- controllers
-- models
-- views
-- employe
-- controllers
-- models
-- views
Botstrap.php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { private $_acl = null; protected function _initAutoload() { $modelLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH.'/modules/default')); if(Zend_Auth::getInstance()->hasIdentity()) { Zend_Registry::set('role', Zend_Auth::getInstance()->getStorage()->read()->role); } else { Zend_Registry::set('role', 'guests'); } $this->_acl = new Model_LibraryAcl; $fc = Zend_Controller_Front::getInstance(); $fc->registerPlugin(new Plugin_AccessCheck($this->_acl)); $fc->registerPlugin(new Plugin_LayoutDisplay($this->_acl)); return $modelLoader; } protected function _initViewHelpers() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->setHelperPath(APPLICATION_PATH.'/helpers', ''); ZendX_JQuery::enableView($view); $view->doctype('HTML4_STRICT'); $view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8') ->appendName('description', 'Tester les modules et les acl'); $view->headTitle()->setSeparator(' - ') ->headTitle('nouveausite.com'); $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/defaultNav.xml', 'nav'); $navContainer = new Zend_Navigation($navContainerConfig); $view->navigation($navContainer)->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); $view->siteTitle = "www.nouveausite.com"; } }
Fichier de configuration :
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules = "" resources.layout.layoutpath = APPLICATION_PATH "/layouts" resources.view[] = resources.db.adapter = mysqli resources.db.isDefaultTableAdapter = true resources.db.params.host = localhost resources.db.params.username = root resources.db.params.password = ***** resources.db.params.dbname = zftest [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1
Lorsque je fais l'appel depuis le module employe :
$test = Employe_Model_DbTable_Employes();
ca fonctionne, même chose pour un appel depuis le module"default". La seul fois ou ce message d'erreur apparait c'est pour ce code :
$test = Admin_Model_DbTable_Users();
ou n'importe quel appel à une class dans admin/models/Dbtable/*.php
La classe est bonne, les appels au autres classes dans les autres modules à partir d'un controleur du module Admin fonctionne...
Je ne vois pas bien d'où ça peut venir ?
Merci d'avance
Hors ligne
Salut,
Je m'excuse d'avoir fait ce post, mais avant de trouver qu'il manquait un "t" au bootstrap admin => boostrap, j'ai pas mal cherché.
J'ai tenté d'initialiser d'autre class (plugin, ....) cela ne fonctionnait pas.
Ce qui m'as mis sur la voie c'est l'insertion d'un die(var_dump($mloader)) dans une fonction _initAutoload() du fameux bootstrap... et là Rien !!!
Donc en regardant deux fois le nom du fichier j'ai trouvé...
Hors ligne
resources.modules.monmodule = "chemin/vers/mon/module"
Cette ligne lance le bootstrap.php s'il est présent à la racine du module, mais il initialise également le loader pour chaque modules.
Hors ligne
3uclide a écrit:
Code:
resources.modules.monmodule = "chemin/vers/mon/module"Cette ligne lance le bootstrap.php s'il est présent à la racine du module, mais il initialise également le loader pour chaque modules.
Merci pour ta réponse!
Cela veut dire que je dois ajouter une ligne pour chaque module? C'est quand même un peu contraignant pour un autoload...!?
Je vais tester dès que j'aurais le temps, et je reviendrais à ce moment-là!
Hors ligne