Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je viens de remarquer que la gestion des erreurs ne fonctionnait pas entre le mode dev et production,
les code généré sont identique, ce qui n'est pas cool alors que j'ai un ErrorController et un views error .
Est-que quelqu'un pourrait me dire ce qui cloche dans mon fichier index.ph, j'ai déjà passer pas mal de temps dessus et je deviens chèvre.
Index.php
<?php error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Europe/Paris'); // mise en place des repertoires et chargement des classes define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application/')); set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR . APPLICATION_PATH . '/default/models/' . PATH_SEPARATOR . get_include_path() ); require_once "Zend/Loader/Autoloader.php"; Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true); // Chargement de la configuration $config = new Zend_Config_Ini(APPLICATION_PATH . '/_configs/application.ini', 'Production'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); $configSession = new Zend_Config_Ini(APPLICATION_PATH . '/_configs/session.ini', 'Production'); $registry->set('configSession', $configSession); //SMTP SERVER if($config->smtp->auth){ $smtpAuth = array('auth' => $config->smtp->auth, 'username' => $config->smtp->username, 'password' => $config->smtp->password); $tr = new Zend_Mail_Transport_Smtp($config->smtp->server,$smtpAuth); }else{ $tr = new Zend_Mail_Transport_Smtp($config->smtp->server); } Zend_Mail::setDefaultTransport($tr); // Mise en place de la BDD try { $db = Zend_Db::factory($config->db); $db->query('SET NAMES UTF8'); $db->getConnection(); Zend_Db_Table_Abstract::setDefaultAdapter($db); Zend_Registry::set('db', $db); } catch (Zend_Exception $e) { exit($e); } // setup controller $frontController = Zend_Controller_Front::getInstance(); if($config->Dev){ $frontController->throwExceptions(true); }else{ $frontController->throwExceptions(false); } // debut debug // Placez ceci dans votre fichier d'amorçage avant de distribuer votre contrôleur frontal $writer = new Zend_Log_Writer_Firebug(); Zend_Registry::set('Firebug', new Zend_Log($writer)); $profiler = new Zend_Db_Profiler_Firebug('All DB Queries'); $profiler->setEnabled(true); $db->setProfiler($profiler); function fb($message, $label=null) { if ($label!=null) { $message = array($label,$message); } Zend_Registry::get('logger')->debug($message); } $debugBar = new Scienta_Controller_Plugin_Debug(array( 'database_adapter' => $db, // Zend_Db_Adapter_Abstract 'memory_usage' => true, 'collect_view_vars' => true)); $frontController = Zend_Controller_Front::getInstance(); $frontController->registerPlugin($debugBar); // fin debug // PAGINATOR Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml'); $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true) // for dev, put it to TRUE ->addModuleDirectory("./../application") ->setControllerDirectory(array( 'default' => APPLICATION_PATH . '/default/controllers', 'admin' => APPLICATION_PATH . '/admin/controllers' )); // Determine module name $router = new Zend_Controller_Router_Rewrite(); $request = new Zend_Controller_Request_Http(); $router->route($request); $moduleName = $request->getModuleName(); //////////////// // ADMIN INIT //////////////// if($moduleName === 'admin') { // LAYOUT SETUP - Setup the layout component Zend_Layout::startMvc(APPLICATION_PATH . '/admin/layouts/scripts'); // VIEW SETUP - Initialize properties of the view object $view = Zend_Layout::getMvcInstance()->getView(); $view->doctype('XHTML1_STRICT'); //Add helpers $view->addHelperPath(APPLICATION_PATH . '/helpers','Zend_View_Helper'); //Set title $view->headTitle('BackOffice'); //Set encoding $view->headMeta()->appendHttpEquiv('Content-Type','text/html; charset=UTF-8'); //Set NewsRoom CSS $view->layout_css_path = '/admin'; } ////////////////// // Equidurable INIT ////////////////// if($moduleName === 'default') { Zend_Layout::startMvc(APPLICATION_PATH . '/default/layouts/scripts'); $view = Zend_Layout::getMvcInstance()->getView(); $view->doctype('XHTML1_STRICT'); //Add helpers $view->addHelperPath(APPLICATION_PATH . '/helpers','Zend_View_Helper'); //Set title $view->headTitle('Front'); //Set encoding $view->headMeta()->appendHttpEquiv('Content-Type','text/html; charset=UTF-8'); } $domaine = $_SERVER['HTTP_HOST']; $lang = new Hostinfo(); $lang = $lang->getLangByHost($domaine); Zend_Registry::set('session', '$session'); if(!isset($_SESSION['Default']['Langue'])){ $_SESSION['Default']['Langue'] = $lang; } // run! $frontController->dispatch();
Merci de l'aide,
Ted
Dernière modification par ted00 (18-09-2009 11:26:27)
Hors ligne
if($config->Dev){ $frontController->throwExceptions(true); }else{ $frontController->throwExceptions(false); }
le probleme vient de là je pense, dans un cas le front controller va gérer les erreurs et dans l'autre non.
Hors ligne
Hello,
Merci de ta réponse.
Même quand j'enlève ces lignes j'ai toujours les messages d'erreur genre
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (12)' in C:\wamp\www\monsite\library\Zend\Controller\Dispatcher\Standard.php:242 Stack trace: #0 C:\wamp\www\monsite\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\monsite\public\index.php(173): Zend_Controller_Front->dispatch() #2 {main} thrown in C:\wamp\www\monsite\library\Zend\Controller\Dispatcher\Standard.php on line 242
Merci de l'aide,
Ted
Hors ligne
Juste pour éclaircir ton problème : si j'ai bien compris ca marche en dev et pas en prod c'est bien ca ?
Hors ligne
Hello,
Enfaite, j'ai ce type de message dans les deux cas,
alors que en prod j'aimerai qu'il l'affiche dans le site garce à ma views error,
avec un message plus policé.
Merci,
Ted
Hors ligne
Peut être devrais tu lire ce tutoriel :
http://julien-pauli.developpez.com/tuto … ceptions2/ Tu devrais trouver tes réponses
Hors ligne
c'est de ce tuto que je suis parti.
Il y a peut-être une subtilité que j'ai pas compris ?
Merci de l'aide,
Ted
Hors ligne
Hello,
Je viens de trouver enfaite $frontController = Zend_Controller_Front::getInstance(); n'était pas instancié,
j'ai mis ces lignes
$frontController = Zend_Controller_Front::getInstance(); if($config->Dev){ $frontController->throwExceptions(true); }else{ $frontController->throwExceptions(false); }
juste avant
$frontController->dispatch();
et c'est bon.
Merci.
Ted
Hors ligne
Il y a truc qui cloche dans ton index, t'essaie de récupérer le module courant alors que tu n'as même pas dispatcher la requête. Tu devrais utiliser un plugin(preDispatch) ou un actionHelper pour initialiser ton layout suivant le module courant... Bonne chance
Hors ligne
Hello,
Je ne vois pas vraiment ce qui cloche, car ça fonctionne sans problème ?
Ted
Hors ligne