Recherche…
Introduction
Le routage est le processus de mappage d'une URL vers un contrôleur . Symfony possède un puissant composant Routing qui vous permet de définir des routes.
Le composant Routing prend en charge un certain nombre de formats de configuration: annotations, YAML, XML et PHP brut.
Paramètres
Paramètre | Détails |
---|---|
prénom | Le nom de l'itinéraire. Exemple: book_show |
chemin | Le chemin (peut contenir des caractères génériques). Exemple: /book/{isbn} |
les défauts | Valeurs par défaut des paramètres |
Itinéraires simples
Utiliser YAML:
# app/config/routing.yml
blog_list:
path: /blog
defaults: { _controller: AppBundle:Blog:list }
Utilisation des annotations:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog", name="blog_list")
*/
public function listAction()
{
// ...
}
}
Une demande pour l'URL /blog
sera gérée par la méthode listAction()
du BlogController
dans AppBundle
.
Routes avec des espaces réservés
Utiliser YAML:
# app/config/routing.yml
blog_show:
path: /blog/{slug}
defaults: { _controller: AppBundle:Blog:show }
Utilisation des annotations:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{slug}", name="blog_show")
*/
public function showAction($slug)
{
// ...
}
}
Toute requête avec une URL correspondant à /blog/*
sera traitée par la méthode showAction()
du BlogController
dans AppBundle
. L'action du contrôleur recevra la valeur de l'espace réservé comme argument de méthode.
Par exemple, une demande pour /blog/my-post
déclenchera un appel à showAction()
avec un argument $slug
contenant la valeur my-post
. En utilisant cet argument, l'action du contrôleur peut modifier la réponse en fonction de la valeur de l'espace réservé, par exemple en récupérant la publication de blog avec le slug my-post
de la base de données.
Valeurs par défaut pour les espaces réservés
Si vous voulez avoir un espace réservé qui peut être omis, vous pouvez lui donner une valeur par défaut:
Utiliser YAML:
# app/config/routing.yml
blog_list:
path: /blog/{page}
defaults: { _controller: AppBundle:Blog:list, page: 1 }
requirements:
page: '\d+'
Utilisation des annotations:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
*/
public function listAction($page = 1)
{
// ...
}
}
Dans cet exemple, les URL /blog
et /blog/1
correspondent à l'itinéraire blog_list
et seront gérées par la méthode listAction()
. Dans le cas de /blog
, listAction()
recevra toujours l'argument $page
, avec la valeur par défaut 1
.