Est-il possible avec symfony2 de définir plusieurs modèles d'url pour une seule action du contrôleur en utilisant des expressions régulières, afin de ne pas avoir à définir plusieurs règles ? Merci d'avance
Réponses
Trop de publicités?
mbo
Points
728
Voulez-vous dire des placeholders avec des exigences ?
blog:
pattern: /blog/{page}
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
requirements:
page: \d+
Ici, vous avez plusieurs itinéraires définis par un caractère générique, validés par des expressions régulières, vers la même action de contrôleur.
Edita:
Chaque partie de l'url peut être un espace réservé.
blog:
pattern: /{type}/{page}
defaults: { _controller: AcmeBlogBundle:Blog:index, page: 1 }
requirements:
type: blog|articles
page: \d+
Jean-Luc Barat
Points
585
Exemple d'annotations pour les routes avec paramètres :
/**
* @Route("/shops/{page}", name="shops")
* @Route("/shops/town/{town}/{page}", name="shops_town")
* @Route("/shops/department/{department}/{page}", name="shops_department")
*/
public function shopsAction(Town $town = null, Department $department = null, $page = 1)
{ ... }
Puis générer une route dans twig comme ceci :
{{ path('shops_town') }}
o
{{ path('shops_town', {'town': town.id}) }}
o
{{ path('shops_department', {'department': department.id}) }}