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 .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow