Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Voilà je cherche à créer un routage me permettant de pouvoir, par exemple, en saisissant : http://localhost/projet/2X345678902345 tomber directement sur le formulaire de saisie et si en saisissant : http://localhost/projet/admin je tombe directement sur le controleur admin et l'action index.
J'ai fait cela :
Bootstrap.php :
protected function _initRouter() { $FrontController = Zend_Controller_Front::getInstance(); //$FrontController->throwExceptions(true); $router = $FrontController->getRouter(); $router->addRoute('coderef', new Zend_Controller_Router_Route('/:coderef')); return $router; }
Cela fonctionne bien mais dans le cas de /admin cela ne fonctionne pas.
J'ai essayé :
protected function _initRouter() { $FrontController = Zend_Controller_Front::getInstance(); //$FrontController->throwExceptions(true); $router = $FrontController->getRouter(); $route = new Zend_Controller_Router_Route_Regex("/[0-9a-zA-Z]{2}[0-9]{9}[0-9a-zA-Z]{2}/i" , array( 'controller' => 'index', 'action' => 'index' ), array( 1 => 'coderef' ), "/%s"); return $router; }
Cela fonctionne bien pour /admin mais plus pour mon expression régulière.
Une idée ?
Merci
Dernière modification par Paul75 (02-10-2012 11:41:29)
Hors ligne
Salut,
Tout d'abord "cela ne marche pas" n'aide pas beaucoup à comprendre le problème.
Il vaudrait mieux donner le message d'erreur ou, en l'occurrence, le résultat que tu obtiens dans le cas où "cela ne marche pas".
Ensuite, si je comprends bien, tu as deux controllers :
- IndexController, qui contient une action indexaction()
- AdminController, qui contient une action indexaction()
Si oui, je vois ta route REGEX qui pointe vers index/index, mais où est la route qui permet d'aller sur admin/index ?
Sachant que dans ta route REGEX, tu pointes sur : 'controller' => 'index' et 'action' => 'index'
Est-ce que ceci fonctionnerait :
[lang=php] $router->addRoute('coderef', new Zend_Controller_Router_Route('/:coderef', array('controller' => 'index', 'action' => 'index', 'coderef' => null))); $router->addRoute('admin', new Zend_Controller_Router_Route('/admin', array('controller' => 'admin', 'action' => 'index')));
Hors ligne
delorbe a écrit:
Salut,
Tout d'abord "cela ne marche pas" n'aide pas beaucoup à comprendre le problème.
Il vaudrait mieux donner le message d'erreur ou, en l'occurrence, le résultat que tu obtiens dans le cas où "cela ne marche pas".
Ensuite, si je comprends bien, tu as deux controllers :
- IndexController, qui contient une action indexaction()
- AdminController, qui contient une action indexaction()
Si oui, je vois ta route REGEX qui pointe vers index/index, mais où est la route qui permet d'aller sur admin/index ?
Sachant que dans ta route REGEX, tu pointes sur : 'controller' => 'index' et 'action' => 'index'
Est-ce que ceci fonctionnerait :Code:
[lang=php] $router->addRoute('coderef', new Zend_Controller_Router_Route('/:coderef', array('controller' => 'index', 'action' => 'index', 'coderef' => null))); $router->addRoute('admin', new Zend_Controller_Router_Route('/admin', array('controller' => 'admin', 'action' => 'index')));
Bonjour,
Oui je voulais dire que je pensais que le regexp sufisait pour detecter...
Mais quand je dis cela ne marchais pas je voulais dire juste que si je tape un code ref du style 2R43424324244 cela marche mais des que je tombais sur un controlleur cela me redonnais comme si c'etais un coderef...
Ta methode marche mais par contre le coderef cela met du temps à charger... Bizarre mais au final cela charge.
On dirais qu'il met du temps à reperer..
Merci
Hors ligne
Salut,
Je ne suis pas du tout à l'aise avec les expressions régulières, mais, sauf erreur de ma part, ta route ne fonctionnait pas, car pour le Router, qu'on ait "2R43424324244" ou paramètre ou "admin" revenait au même, il s'agissait juste d'un paramètre contenant de l'alphanumérique.
A moins que ton expression régulière était conçue justement pour reconnaître la présence de numériques dans le paramètre, mais comme j'ai dit, je ne m'y connais pas suffisamment pour l'affirmer.
Sinon, content que ça marche
Les deux routes sont "standard", et n'utilisent même pas d'expression régulière.
Donc, je ne pense pas que le problème de lenteur puisse venir de ça.
Cela dit, peut-être peux-tu maintenant utiliser Zend-Cache dans ton Bootstrap, si ce n'est pas déjà le cas.
Cela peut aider.
N'hésite pas si tu as d'autres soucis
Hors ligne
delorbe a écrit:
Salut,
Je ne suis pas du tout à l'aise avec les expressions régulières, mais, sauf erreur de ma part, ta route ne fonctionnait pas, car pour le Router, qu'on ait "2R43424324244" ou paramètre ou "admin" revenait au même, il s'agissait juste d'un paramètre contenant de l'alphanumérique.
A moins que ton expression régulière était conçue justement pour reconnaître la présence de numériques dans le paramètre, mais comme j'ai dit, je ne m'y connais pas suffisamment pour l'affirmer.
Sinon, content que ça marche
Les deux routes sont "standard", et n'utilisent même pas d'expression régulière.
Donc, je ne pense pas que le problème de lenteur puisse venir de ça.
Cela dit, peut-être peux-tu maintenant utiliser Zend-Cache dans ton Bootstrap, si ce n'est pas déjà le cas.
Cela peut aider.
N'hésite pas si tu as d'autres soucis
re,
merci pour ta réponse.
Je n'utilise pas du tout Zend_Cache dans l'application.
Par contre je ne vois pas en quoi cela provoque cette lenteur...
Si j'enleve le routeur et que je met uniquement : $router->addRoute('coderef', new Zend_Controller_Router_Route('/:coderef'));
Cela ne fais aucunes lenteurs...
Merci
Hors ligne
Ah bon...
Et si tu retires juste le 'coderef' => null dans la route, ça donne quoi?
Juste pour voir...
Hors ligne
delorbe a écrit:
Ah bon...
Et si tu retires juste le 'coderef' => null dans la route, ça donne quoi?
Juste pour voir...
En fait non je suis idiot !
J'avais oublié que j'appelle un Webservice et qui est inaccessible depuis chez moi à la maison en local..
JE suis bête....
Je retire ce que j'ai dit.
Du coup je dois faire un routeur par controlleur...
Merci
Hors ligne
De rien
Si tu veux tu peux éditer ton tout premier post et ajouter [résolu] dans le sujet
Bon dev
Hors ligne
delorbe a écrit:
De rien
Si tu veux tu peux éditer ton tout premier post et ajouter [résolu] dans le sujet
Bon dev
re,
merci ! c'est fait !
Hors ligne
Pages: 1