Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-05-2010 19:55:28

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Route Regex avec config XML

Bonjour,

je réecris entièrement mon fichier de routes pour le basculer en XML, je trouve que ce format est plus robustes que l'ini pour chainer les hostnames.

Je rencontre un probleme avec mes routes Regex

Mon ancienne route :

Code:

viewarticle.type = "Zend_Controller_Router_Route_Regex"
viewarticle.route = "news/([\w-]*)/(\d+)-([\w-]*)"
viewarticle.reverse = "news/%s/%d-%s"
viewarticle.map.1 = "category"
viewarticle.map.2 = "id"
viewarticle.map.3 = "title"
viewarticle.defaults.controller = "news"
viewarticle.defaults.action = "viewarticle"
viewarticle.defaults.module = "default"

En xml :

Code:

<viewarticle type = "Zend_Controller_Router_Route_Regex">
    <route>news/([\w-]*)/(\d+)-([\w-]*)</route>
    <map>
          <category>1</category>
          <id>2</id>
          <title>3</title>
    </map>
    <defaults module="default" controller="news" action="viewarticle" />
    <reverse>news/%s/%d-%s</reverse>
</viewarticle>

Ca ne marche pas, j'ai le message : "Cannot assemble, too few arguments ?"
Il semblerait que c'est le mappage qui cause probleme.

J'ai dumpé l'objet route. Avec le fichier ini, le mapping donne :

Code:

  ["_map:protected"] => array(3) {
    [1] => string(9) "categorie"
    [2] => string(2) "id"
    [3] => string(5) "titre"
  }

Alors qu'avec le xml, ça donne :

Code:

["_map:protected"] => array(3) {
    ["categorie"] => string(1) "1"
    ["id"] => string(1) "2"
    ["titre"] => string(1) "3"
}

Après quelques recherches, j'ai trouvé ceci :
[#ZF-3474] Zend_Controller_Router_Route_Regex won't assemble when used with xml config - Zend Framework Issue Tracker

Je ne sais pas si une solution a été trouvée ?

Merci d'avance.

Hors ligne

 

#2 27-05-2010 13:05:16

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Route Regex avec config XML

Hmmm je vois.

En fait, avec un mapping comme ça, il faut transmettre les paramètres dans $this->url() de la manière

Code:

$this->url( array(1 => "cinema", 2 => 789233, 3 => "titre de l'article"), 'viewarticle');

donc clé => valeur, et non nom_paramètre => valeur.

Je vais vérifier si ma version de ZF est à jour tiens big_smile

Hors ligne

 

#3 31-05-2010 14:50:37

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Route Regex avec config XML

Bon eh bien, c'était effectivement mon ZF qui n'était pas à jour. Je passe de la 1.9.2 à la 1.10 et la config XML marche parfaitement.

Ca marche mieux, mais y a encore des choses qui ne me semblent pas claires hmm

Code:

<routes>
    <www type="Zend_Controller_Router_Route_Hostname">
        <route>www.domaine.com</route>
        <chains>
            <index type="Zend_Controller_Router_Route">
                <route></route>
                <defaults module="default" controller="index" action="index" />
            </index>
            <communaute>
                <route>communaute</route>
                <defaults module="communaute" />
                <chains>
                    <index type="Zend_Controller_Router_Route">
                        <route>:action/*</route>
                        <defaults controller="index" action="index" />
                    </index>
                    <fiche-membre type="Zend_Controller_Router_Route_Regex">
                        <route>fiche/profil-(\d+)-(.+)</route>
                        <reverse>fiche/profil-%d-%s</reverse>
                        <map>
                            <id>1</id>
                            <nom>2</nom>
                        </map>
                        <defaults action="fichemembre" />
                    </fiche-membre>
                </chains>
            </communaute>
        </chains>
    </www>

Comme vous pouvez le voir, j'utilise une route <index> avec :action/* dedans pour couvrir les pages d'accueil et les actions basiques du controleur par défaut.

http://www.domaine.com/communaute/une_action_au_hasard => marche très bien.

http://www.domaine.com/communaute/ ne marche pas sad, c'est la page d'accueil qui s'affiche.
J'ai vérifié, et c'est la route default qui est matchée.

J'ai essayé un assemble() sur la route "www-communaute-index" et il me sort bien www.domaine.com/communaute/

Je vois pas ce qu'il se passe là hmm

Dernière modification par supertino7 (31-05-2010 15:16:26)

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