Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
je suis nouvelle sur le forum, j'espère que c'est l'occasion que j'apprenne beaucoup de choses, et qui sais que je porte ma contrib' !
Je voudrais former mes url via le zend router regex.
Qui devrais me permettre d'obtenir :
videos-75-abcd, mais aussi videos-75, ou encore videos.
$router->addRoute('videos',new Zend_Controller_Router_Route_Regex( '(videos|video-clips|video-freestyles)(?:-(75|78|971|974))?(?:-(\w)+)?' , array( 'controller' => 'list-entite', 'action' => 'index', 'entite' => null , 'pays' => null , 'musique' => null ) , array( 1=>'entite' , 2=>'pays' , 3=>'musique' ), '%s-%s-%s' ));
Mais voila cela ne marche pas. Je suppose que je n'ai pas le recul suffisant pour appréhender les expressions telles que celle la.
Pourriez vous m'aider svp.
Merci d'avance !
Hors ligne
Voila une qui marche :
(\w+)(?:-(\d+))?(?:-(\w+))?
Par contre, je ne comprends pas vraiment pourquoi la tienne ne marche pas (a priori, c'est la 3eme partie qui pose problème)
Dernière modification par nORKy (08-12-2008 17:34:58)
Hors ligne
Le boulet !! On a la réponse devant nos yeux
La différence entre ton expression et la mienne, c'est le + qui est mal placé pour la 3eme partie ! (\w+)
(mis à part que moi, j'ai pas mis les mots complets, mais c'est ca, toi qui voit)
Hors ligne
au fait, garde un testeur sous la main :
http://lumadis.be/regex/test_regex.php?lang=fr
Hors ligne
Petite note: Un des problèmes de vos routes, c'est qu'elles contiennent des sous masques, donc les routes ne peuvent pas être (ré)assemblées (à cause de l'utilisation de la fonction sprintf() pour l'assemblage).
Hors ligne
Mr.MoOx tu peux detailler un peu ? J'ai pas compris et ta reponse semble interessante
Hors ligne
Je sais pas si tu sais, mais les routes peuvent (et devraient toujours ) servir à générer les liens via le helper url.
Si tu utilises des sous masques comme ici "(\w+)(?:-(\d+))?(?:-(\w+))?" (cf italic) tu ne pourra pas généré correctement ton url car pour l'assemblage des routes le ZF utilise sprintf() qui permet juste de remplacer des variables dans une string, sans prendre en compte des masques dont l'existance est des fois non connu (car. spéc. ? par exemple, ou encore {0,...} )
Hors ligne
Je confirme, il faut redéfinir et bien se casser la tête sur le routeur pour que ça fonctionne lol
Hors ligne
je pense que sweety_des_isles s'en rendra compte par elle même.
De plus, même si 'il faudrait' faire de "tel manière", rien n'en lui empêche d'écrire son propre helper url pour former ses urls.
Hors ligne
Pages: 1