Aller au contenu
Khleo

Utilisation de Zend_Controller_Router_Rewrite

Noter ce sujet :

Recommended Posts

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Khleo,



Ne te manque t-il pas un



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

Partager ce message


Lien à poster
Partager sur d’autres sites

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


Partager ce message


Lien à poster
Partager sur d’autres sites

Le problème venait du regex :




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

au lieu de de



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

Modifié par Khleo

Partager ce message


Lien à poster
Partager sur d’autres sites

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


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×