Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-10-2008 11:29:31

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Petite question de routage

Hello tout le monde,

j'ai une petite question de logique concernant le composant de routage.
Avant de poser ma question, je tiens à dire que je suis au courant qu'il est possible de réécrire ses propres règles de routage.

Maintenant que c'est dit, prenons cette url:
http://localhost/annonce/votre-annonce/etape1/

Zend va chercher la fonction votreAnnonceAction du controlleur AnnonceController mais la ou je me pose la question, c'est au niveau du param.
Dans l'action j'essaye de récupèrer le param comme ceci:
    $val = $this->getRequest()->getParam("etape1", -1);

or $val est toujours égal à -1. Pour que $val soit renseigné il faut une url du type:
http://localhost/annonce/votre-annonce/etape1/val/

ce n'est pas très logique ? non ?
pour réaliser ce que je veux faire, suis je obliger de réecrire mes règles ? (je peux le faire mais je trouvais ça plus propre d'utiliser la logique standard)

d'avance merci

Hors ligne

 

#2 03-10-2008 11:58:11

DarKA
Membre
Date d'inscription: 18-07-2007
Messages: 84

Re: Petite question de routage

En fait quand tu ne définit pas de règles de routage, le Zend utilise une règle de routage par défaut :

annonce/votre-annonce est égale à : controller/annonce/action/votre-annonce

Les paramètres eux ne prennent aucunes attitudes particulières et il te faut bien les redéclarer par paires clé-valeurs.

Or quand t'a déclaré  http://localhost/annonce/votre-annonce/etape1/, tu as déclaré la clé mais tu ne lui as pas assigné de valeur donc quand tu fais ton getParam en lui assignant pour valeur par défaut 1, il la prend tout le temmps.

Pour faire : http://localhost/annonce/votre-annonce/etape1/ Tu es obligé d'utiliser les règles de routages pour expliquer au Zend que la troisieme partie de ton URI est la valeur de etape1.

Hors ligne

 

#3 03-10-2008 12:27:20

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Petite question de routage

est il possible de faire une règle générique ?
et si oui, comment ?

Hors ligne

 

#4 03-10-2008 12:46:08

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Petite question de routage

je me suis décidé à redéfinir la route mais je n'arrive pas à remplir le champs action par mon regex:
comment le corriger  ?

Code:

        $regex = "^annonce/(.*)/(.*)\.html";    

        $route = new Zend_Controller_Router_Route_Regex(
            $regex,
            array(
                'controller' => 'annonce',
                'action'     => 1 !!!!commment dire que c'est la 1ere chaine retourner par mon regex
            ),
            array( 
                2 => 'etape'
            )
        );
        $router->addRoute("annonce",$route);

Hors ligne

 

#5 03-10-2008 12:53:30

gauthier
Membre
Date d'inscription: 30-09-2008
Messages: 116
Site web

Re: Petite question de routage

Salut bucheron,

Dans l'action j'essaye de récupèrer le param comme ceci:
    $val = $this->getRequest()->getParam("etape1", -1);

or $val est toujours égal à -1. Pour que $val soit renseigné il faut une url du type:
http://localhost/annonce/votre-annonce/etape1/val/

ce n'est pas très logique ? non ?

A dire vrai, c'est plutôt logique, puisque getParam() accepte qu'un second paramètre lui soit passé pou servir de valeur par défaut au cas ou la clé fournie ne soit pas trouvée (i.e. non affectée par setPram, ni en _GET, ni en _POST).

Donc en passant -1 en second paramètre, cette valeur te sera effectivement toujours retournée par getParam(), du moins si aucune valeur n'a été fournie par l'une des trois méthodes indiquées précédemment.

Mais j'ai peut-être mal compris ta question smile


Consultant Zend Technologies // Blog perso : Logiciel libre et développement web -- http://freeblogware.org

Hors ligne

 

#6 03-10-2008 17:53:44

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: Petite question de routage

ouais tu as raison. Disons que dans mon esprit ça aurait été "logique" de passer une chaine de caractères à nul.

Concernant ma question concernant le champs action d'une route définit en expression régulière, une idée ?

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