Aller au contenu

Utilisation de Zend_Controller_Router_Rewrite


Aller à la solution Solutionné par Khleo,

Sujets conseillés

Posté
Salut,


J'ai essayé de faire ma réécriture d'URL avec Zend_Controller_Router_Rewrite mais quelque chose semble bloquer :




Pour cela j'ai ajouté dans mon bootstrap :


protected function _initRouter () {

$config = new Zend_Config_Ini(APPLICATION_PATH.'/config/application.ini', APPLICATION_ENV);
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');

}

et dans mon application.ini :


routes.interet.type = "Zend_Controller_Router_Route_Regex"

routes.interet.route = "/i/(.+)/([0-9]+)/"

routes.interet.defaults.controller = "interet"

routes.interet.defaults.action = "index"

routes.interet.map.1 = "seo"

routes.interet.map.2 = "id"

routes.interet.reverse ="i/%s/%d/"


Et mon .htaccess est le suivant :


RewriteEngine On


RewriteBase /

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php


Mais j'obtiens le message d'erreur suivant :


Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /www/library/Zend/Controller/Dispatcher/Standard.php:248 Stack trace: #0 /www/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /www/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch() #2 /www/htdocs/xxx/application/Bootstrap.php(8): Zend_Application_Bootstrap_Bootstrap->run() #3 /www/library/Zend/Application.php(366): Bootstrap->run() #4 /www/htdocs/xxx/html/index.php(15): Zend_Application->run() #5 {main} Next exception 'Zend_Controller_Exception' with message 'Invalid controller specified (error)#0 /www/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /www/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller in /www/library/Zend/Controller/Plugin/Broker.php on line 336



L'accès depuis http://www.ndd.dev/interet/index/id/1/ reste lui toujours disponible.


Merci
Posté

Bonjour Khleo,



Ne te manque t-il pas un



routes.interet.defaults.module = "nomdumodule" ?

Posté

Salut,



oui j'ai essayé mais rien.



J'ai également essayé de faire sans le .ini :






$router = Zend_Controller_Front::getInstance()->getRouter();


$r = new Zend_Controller_Router_Route_Regex(
"/i/([-\w]+)/(\d+)/",
array('controller' => 'interet', 'action' => 'index'),
array(1 => 'seo', 2 => 'id'),
'i/%s/%d/'
);


$router->addRoute('interet', $r);

mais là encore il essaye de trouver le controleur "i" au lieu de faire la route


  • Solution
Posté (modifié)

Le problème venait du regex :




"i/([-\w]+)/(\d+)",

au lieu de de



"/i/([-\w]+)/(\d+)/",

Modifié par Khleo
Posté

Super problème résolu.


En cherchant des solutions pour t'aider j'avais testé la solution du " / " en le rajoutant dans mes regexp du routes.ini ça ne m'a pas fait sauté la réécriture pour autant c'est bizarre.



T'es sous qu'elle version de zend ?


Le projet sous le quel j'ai testé est en 1.9


  • 2 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...