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