Bonjour,

Cela fait plusieurs fois que j'abonne l'idée d'utiliser firebug, car après plusieurs heurs, à chaque fois j'échoue.


Cette fois j'ai envie de mettre en place ce Profiler, et j'ai besoin de votre aide.


Voici divers tuto que j'ai suivis :

http://framework.zend.com/manual/fr/....profiler.html
http://www.peacocksuit.com/blog/2008...es-to-firebug/
http://www.libre-a-vous.fr/requetes-...filer-firebug/

Je vais vous monter ce qu' j'ai écris dans mes fichiers, je vais mettre un max d'infos pour mieux vous aider, dsl pour la longueur :

Bootstrap (sans le profiler)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function _initAutoload() {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
                        'namespace' => '',
                        'basePath' => APPLICATION_PATH));
        return $moduleLoader;
    }
 
}

application.ini
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
phpSettings.date.timezone = "Europe/Paris"
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = juliendu75
resources.db.params.password = *******
resources.db.params.dbname = base_test
database.params.profiler.enabled   = true
database.params.profiler.class  = Zend_Db_Profiler_Firebug
 
[staging : production]
 
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
 
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

un exemple d'une classe métier de la table Zone, c'est très minimaliste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class Model_DbTable_Itstaff extends Zend_Db_Table_Abstract {
    protected $_name = 'it_staff' ; # Nom de la table.
    protected $_primary = 'it_id'; # Attribut clé primaire.
    protected $_dependentTables = array('zone') ;
}

le contrôleur index, encore une fois très minimaliste:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    public function testAction()
    {
        $table = new Model_DbTable_Itstaff() ;
        $res = $table->fetchAll();
        $this->view->staff = $res;
    }


alors maintenant il faut rajouter le code pour activer le profiler,

dans Bootstrap j'ajoute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    protected function _initDB() {
        $params = array(
            'host'     => '127.0.0.1',
            'username' => 'juliendu75',
            'password' => '******',
            'dbname'   => 'base_test'
        );
        $db = Zend_Db::factory('PDO_MYSQL', $params);
 
        $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
        $profiler->setEnabled(true);
 
        $db->setProfiler($profiler);
    }

et là il y a une erreur :
An error occurred

Application error

Exception information:

Message: No adapter found for Model_DbTable_Itstaff

Stack trace:

#0 C:\wamp\www\test\library\Zend\Db\Table\Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
#1 C:\wamp\www\test\library\Zend\Db\Table\Abstract.php(268): Zend_Db_Table_Abstract->_setup()
#2 C:\wamp\www\test\application\controllers\IndexController.php(27): Zend_Db_Table_Abstract->__construct()
#3 C:\wamp\www\test\library\Zend\Controller\Action.php(513): IndexController->testAction()
#4 C:\wamp\www\test\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('testAction')
#5 C:\wamp\www\test\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 C:\wamp\www\test\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#7 C:\wamp\www\test\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#8 C:\wamp\www\test\public\index.php(26): Zend_Application->run()
#9 {main}

alors je me suis dit qu'il faut ajouter le '$db' dans la classe model.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    public function __construct($db) {
        $this->_db = $db;
    }

puis dans le contrôleur faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
               $params = array(
            'host'     => '127.0.0.1',
            'username' => 'juliendu75',
            'password' => '******',
            'dbname'   => 'base_test'
        );
        $db = Zend_Db::factory('PDO_MYSQL', $params);
 
        $table = new Model_DbTable_Itstaff($db) ;

C’est moche mais ça marche.
Je n’ai pas envie de rappeler le '$db' à chaque contrôleur....


La requête marche, mais pas le profiler Firebug

J’en appelle à votre aide, j’ai mis un maximum de choses pour vous faciliter la tâche.

Merci d’avance.