Injecter les prérequis de langue dans vos routes Symfony

Publié le 01/08/2019 • Mis à jour le 01/08/2019

English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧

C'est une fonctionnalité qui a été introduite ans Symfony 4.1. Ça permet de directement injecter un paramètre dans un prérequis de route au lieu de mettre des valeurs en dur. Dans ce cas, pour ce site web, le paramètre locales_requirements contient %locale%|fr ou locale est la langue par défaut "en". Si vous voulez ajouter une langue à votre projet, tout ce que vous aurez à faire est de l'ajouter à ce paramètre. (et tout traduire évidemment ! 😁). Notez que cette annotation est déclarée au niveau du contrôleur, donc toutes les actions qui y sont déclarées héritent de ces prérequis.


<?php declare(strict_types=1);

// src/Controller/BlogController.php

namespace App\Controller;

use App\Controller\Post\Post13Trait;
use App\Controller\Post\Post26Trait;
use App\Controller\Post\Post51Trait;
use App\Controller\Post\Post59Trait;
use App\Data\ArticleData;
use App\Entity\Article;
use App\Twig\Extension\SlugExtension;
use App\Utility\BreadcrumbsHelper;
use Monolog\Logger;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;

/**
 * @Route("/{_locale}/blog", name="blog_", requirements={"_locale"="%locales_requirements%"})
 */
class BlogController extends AbstractController

 Plus sur Stackoverflow