Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-09-2012 01:00:28

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

[résolu] Zend_Controller_Router_Route_Regex : not work

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 :

Code:

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é :

Code:

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

 

#2 01-10-2012 13:42:03

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

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')));

Hors ligne

 

#3 01-10-2012 20:24:58

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

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

 

#4 02-10-2012 10:27:57

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

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 smile
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 wink

Hors ligne

 

#5 02-10-2012 11:14:43

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

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 smile
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 wink

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

 

#6 02-10-2012 11:21:17

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

Ah bon...

Et si tu retires juste le 'coderef' => null dans la route, ça donne quoi?
Juste pour voir...

Hors ligne

 

#7 02-10-2012 11:30:53

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

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

 

#8 02-10-2012 11:39:04

delorbe
Membre
Date d'inscription: 06-08-2010
Messages: 57

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

De rien smile
Si tu veux tu peux éditer ton tout premier post et ajouter [résolu] dans le sujet wink

Bon dev

Hors ligne

 

#9 02-10-2012 11:41:50

Paul75
Membre
Lieu: Paris
Date d'inscription: 23-12-2010
Messages: 101

Re: [résolu] Zend_Controller_Router_Route_Regex : not work

delorbe a écrit:

De rien smile
Si tu veux tu peux éditer ton tout premier post et ajouter [résolu] dans le sujet wink

Bon dev

re,

merci ! c'est fait !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages