Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-11-2009 18:31:41

dolu
Nouveau membre
Date d'inscription: 25-11-2009
Messages: 3

[ZF 1.9] Autoload + Model

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 :

Code:

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 :

Code:

class Contacts_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

Voici le controleur SubscribersController.php :

Code:

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 :

Code:

class Contacts_Model_DbTable_Subscribers extends Zend_Db_Table_Abstract
{
    protected $_name    =    'subscribers';
}

Et voici l'erreur que j'obtiens :

Code:

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 :

Code:

<?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 :

Code:

[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

 

#2 25-11-2009 19:27:12

Bunker
Nouveau membre
Date d'inscription: 25-11-2009
Messages: 5

Re: [ZF 1.9] Autoload + Model

Sans ton application.ini tu as

Code:

reources.modules = ""

Je te laisse corriger wink

[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

 

#3 26-11-2009 14:31:54

dolu
Nouveau membre
Date d'inscription: 25-11-2009
Messages: 3

Re: [ZF 1.9] Autoload + Model

Je ne sais pas ce que je dois mettre dans cette variable, j'ai ça qui est défini juste au dessus :

Code:

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

 

#4 26-11-2009 17:45:03

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [ZF 1.9] Autoload + Model

Bonjour,
malheureusement... j'ai exactement le même problème ?

Code:

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

Code:

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 :

Code:

[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...  hmm
Je ne vois pas bien d'où ça peut venir ?
Merci d'avance


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#5 27-11-2009 10:58:19

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [ZF 1.9] Autoload + Model

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é...


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#6 27-11-2009 16:58:31

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [ZF 1.9] Autoload + Model

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.

Hors ligne

 

#7 30-11-2009 15:24:06

dolu
Nouveau membre
Date d'inscription: 25-11-2009
Messages: 3

Re: [ZF 1.9] Autoload + Model

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages