Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
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 :
<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 :
["_map:protected"] => array(3) { [1] => string(9) "categorie" [2] => string(2) "id" [3] => string(5) "titre" }
Alors qu'avec le xml, ça donne :
["_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
Hmmm je vois.
En fait, avec un mapping comme ça, il faut transmettre les paramètres dans $this->url() de la manière
$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
Hors ligne
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
<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 , 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à
Dernière modification par supertino7 (31-05-2010 15:16:26)
Hors ligne