Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous, je voudrais vous soumettre un problème que je rencontre avec Z-F.
Tout d'abord Voilà ce que j'essaie de faire:
Je veux chargé mes routes depuis un Fichier INI, jusque là rien d'extraordinaire. J'ai suivi la documentation à la lettre comme suit :
Mon fichier config.ini
. . . [router] routes.mod.route = ":module/:controller/:action/*" routes.dire.type = "Zend_Controller_Router_Route_Regex" routes.dire.route = "dire(?:/(.+))?" routes.dire.defaults.controller = "index" routes.dire.defaults.action = "index" routes.dire.defaults.module = "default" routes.dire.defaults.message = "Bonjour" routes.dire.map.1 = "message" routes.dire.reverse = "dire/%s"
Ne faite pas attention au motif de la route, c'est juste une route de test du style "dire bonjour".
Dans mon bootstrap (j'ai fait mon bootstrap sous forme de plugins) dont voici un extrait:
<?php class Plugins_Bootstrap extends Zend_Controller_Plugin_Abstract{ /** * * @var unknown_type */ protected $_root; protected $_root_ap; protected $_front; public function __construct($env = null,$root = null,$ap_root = null){ $this->_env = $env; // détection de la racine des documents if (null === $root) { $root = realpath('.') ; } $this->_root = $root; // détection du chemin vers l'application if (null === $ap_root) { $ap_root = $root . '/application' ; } $this->_root_ap = $ap_root; // initialisation de la configuration $this->initConfig(); // récupération d'une référence vers le contrôleur $this->_front = Zend_Controller_Front::getInstance(); if ($env == 'development') { // on active l'affichage de toutes les erreurs error_reporting(E_ALL | E_STRICT); ini_set('display_startup_errors', 1); ini_set('display_errors', 1); $this->_front->throwExceptions(true); } } public function routeStartup(Zend_Controller_Request_Abstract $request){ . . . $this->initRoutes(); // initialisation des routes depuis le fichier INI . . . } public function initControllers(){ $this->_front->addModuleDirectory($this->_root_ap.'/modules'); $this->_front->setControllerDirectory(array( 'default'=>$this->_root_ap.'/modules/default/controllers', 'admin'=>$this->_root_ap.'/modules/admin/controllers' )); $this->_front->setDefaultModule('default'); $this->_front->setDefaultControllerName('index'); } ############################################################### public function initRoutes(){ $router = new Zend_Controller_Router_Rewrite(); $config = new Zend_Config_Ini($this->_root_ap.'/configs/config.ini',"router"); $router->addConfig($config,"routes"); $this->_front->setRouter($router); } ############################################################### public function preDispatch(Zend_Controller_Request_Abstract $request){ $module = $request->getModuleName(); if ('admin' == $module){ Zend_Layout::getMvcInstance()->setLayoutPath($this->_root_ap.'/modules/admin/layouts'); } } } ?>
Mais apparemment, il ne prend pas en compte ma route quand j'essaue d'attendre l'url:
http://localhost/site/dire/Bonjour%20tout%20le%20Monde
ou
http://localhost/site/dire/Bonjour%20tout%20le%20Monde?format=html
Ce qui devrait me renvoyé "Bonjour tout le monde" avec un
jQuery("madiv").load("./dire/Bonjour%20tout%20le%20Monde?format=html ");
... par exemple.
alors que que si je crée ma route en utilisant directement les classes comme suit:
public function initRoutes(){ $router = $this->_front->getRouter(); $router->addRoute('mod', new Zend_Controller_Router_Route(':module/:controller/:action/*')); $route = new Zend_Controller_Router_Route_Regex( 'dire(?:/(.+))?', array( 'message' => 'Bonjour', 'controller' => 'index', 'action' => 'index' ), array( 1 => 'message' ), "dire/%s" ); $router->addRoute('dire',$route); $this->_front->setRouter($router); }
Cela fonctionne parfaitement.
Vous allez surement me dire "pourquoi ne pas utilisé la méthode par classe?", en faite je veux rendre mon plugins indépendant et centralisé toute la configuration de celui-ci dans un fichier INI, ainsi je n'ai plus à toucher au code de mon plugin, mais juste à modifier mon fichier INI.
Voilà j'espère m'avoir bien fait comprendre.
J'espère que quelqu'un pourra m'aidé ou m'éclairé.
Dernière modification par blackstones (18-12-2009 04:25:28)
Hors ligne