Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-01-2010 16:14:37

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

[Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Salut,
Je voudrais savoir s'il est possible de paramétrer des routes uniquement pour un de mes controllers.
Je m'explique :
- j'ai 3 modules dont un qui se nomme frontend.
- dans mon module frontend j'ai mes controllers (index, controller1, controller2, ...).
- j'ai déjà un routage qui est réalisé pour le changement de langue. les urls sont de la forme : http://www.monsite.com/lang/controller1/action1/

Je souhaite créer un routage spécifique uniquement pour mon controller2, il aurait des adresses du type :
http://www.monsite.com/lang/controller2/param1

Comment puis-je faire ?

Dernière modification par Flizer (02-01-2010 16:15:15)

Hors ligne

 

#2 06-01-2010 12:15:16

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Je ne vois pas comment faire, personne n'a déjà fait celà ?
Est-ce possible ?

Hors ligne

 

#3 06-01-2010 12:54:36

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Ben tu ajoutes un 2e routage après le 1er (les derniers routages ont la priorité).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 07-01-2010 12:23:38

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Justement, le deuxième écrase le premier. Du coup le premier ne fonctionne plus.

Code:

$router = new Zend_Controller_Router_Rewrite();
        $route = new Zend_Controller_Router_Route(
                "/:@language/:@controller/:@action/*",
                array(
                    "language"      =>  "fr",
                    "module"        =>  "frontend",
                    "controller"    =>  "index",
                    "action"        =>  "index"
                ), array('language' => '[a-z]{2}')
            );        

        //URL Collection        
        $test = new Zend_Controller_Router_Route(
            "/:@language/:@controller/:espece",
            array(
                "language"      =>  "fr",
                "module"        =>  "frontend",
                "controller"    =>  "collection",
                "action"        =>  "oiseau"
            ), array(1 => 'espece')
        );

Hors ligne

 

#5 07-01-2010 14:21:31

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

ta 2e route n'est pas bonne elle continue à intercepter tous les controlleurs

Code:

$router = new Zend_Controller_Router_Rewrite();
        $route = new Zend_Controller_Router_Route(
                "/:@language/:@controller/:@action/*",
                array(
                    "language"      =>  "fr",
                    "module"        =>  "frontend",
                    "controller"    =>  "index",
                    "action"        =>  "index"
                ), array('language' => '[a-z]{2}')
            );        

        //URL Collection        
        $test = new Zend_Controller_Router_Route(
            "/:@language/collection/:espece",
            array(
                "language"      =>  "fr",
                "module"        =>  "frontend",
                "controller"    =>  "collection",
                "action"        =>  "oiseau"
            ), array(1 => 'espece')
        );

J'ai remplacé ton :@controller par collection dans ta route. Sinon la 2e route intercepte n'importe quel controller...

A+, Philippe
PS : pour me coucher moins bête ce soir, que signifie tes "@" devant tes variables dans tes routes ?


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#6 07-01-2010 16:34:39

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Pour les "@" je ne connais pas leur utilité, je pensais que c'était obligatoire sauf pour les paramètres. En fait c'était sur un tutoriel que j'avais suivi pour apprendre les routes. J'ai pas réussi à le retrouver désolé, il faut dire que j'en ai passé tellement ...
J'ai essayé ta méthode, que j'avais déjà tenté, elle fonctionne, mais me casse mes urls traduites.
Pour faire court, j'ai un peu triché, je récupère la langue de l'url dans le Bootstrap (je sais c'est pas bien), mais ça me simplifie pas mal la vie. Du coup j'ai une fonction _initTranslate(), puis _initRoute() dans mon Bootstrap.
et tout fonctionne impeccable sauf cette maudite route spécifique.

Hors ligne

 

#7 07-01-2010 16:48:35

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

Et puis il faut que je cré aussi une route pour chaque langue du coup avec ta méthode. C'est pour cela que j'avais mis :@controller dans le deuxième. La conséquence a été l'écrasement de ma première route. Logique ...

Je vais tenter avec une condition pour ma route "collection" en trichant comme avec la langue. Ca me plait pas de faire ça mais je n'ai pas le choix.

Dernière modification par Flizer (08-01-2010 12:00:32)

Hors ligne

 

#8 08-01-2010 14:36:31

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

J'y suis arrivé, j'ai eu un problème en enlevant les "@". Je ne sais pas exactement à quoi ils servent, mais je sais que mes urls traduites ne fonctionnent pas s'ils n'y sont pas.
Par contre la méthode que j'ai utilisé n'est pas propre ... Si quelqu'un sait comment faire proprement je suis preneur.

Hors ligne

 

#9 11-01-2010 09:19:20

nosferapti
Membre
Date d'inscription: 10-01-2010
Messages: 40

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

le @ indique que la variable peut être traduites donc tu peux les laisser ça n'entre pas en compte pour ton problème

montre nous ton code complet avec les appels à "addRoute"


GNAP !

Hors ligne

 

#10 11-01-2010 14:11:06

Flizer
Membre
Date d'inscription: 17-12-2009
Messages: 34

Re: [Zend_Controller_Router_Route][1.9.6] Route spécifique à un controller

ok pour le "@", ça ne me surprends pas.
voilà le code :

Code:

$router = new Zend_Controller_Router_Rewrite();
        $route = new Zend_Controller_Router_Route(
                "/:@language/:@controller/:@action/*",
                array(
                    "language"      =>  "fr",
                    "module"        =>  "frontend",
                    "controller"    =>  "index",
                    "action"        =>  "index"
                ), array('language' => '[a-z]{2}')
            );        

        //URL Collection        
        $test = new Zend_Controller_Router_Route(
            "/:@language/collection/:espece",
            array(
                "language"      =>  "fr",
                "module"        =>  "frontend",
                "controller"    =>  "collection",
                "action"        =>  "oiseau"
            ), array(1 => 'espece')
        );

$route->assemble(array('controller'=>'birds', 'action'=>'list', 'language'=>'en'));
$router->addRoute("birds",$route);
$router->addRoute("collection",$test);

$frontController = Zend_Controller_Front::getInstance();
$frontController->setRouter($router);

J'ai une solution fonctionnelle actuellement, c'est simplement qu'à le faire autant le faire propre.

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