Параметр locale атрибута Route
Параметр locale атрибута Route позволяет
привязать маршрут к определённой локали. Если локаль
запроса не совпадает с указанной в параметре, маршрут
не будет сопоставлен. Это удобно для создания
мультиязычных сайтов, где каждый URL привязан
к своему языку.
Синтаксис
#[Route(path, name: name, locale: locale)]
Пример
Давайте создадим маршрут, доступный только
для русской локали 'ru':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index', locale: 'ru')]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода для запроса с локалью 'ru':
"hello"
Если локаль запроса будет 'en', маршрут не
сопоставится и Symfony вернёт ошибку 404.
Пример
Давайте создадим два маршрута с одинаковым путём, но разными локалями:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_ru', locale: 'ru')]
public function indexRu(): Response
{
return new Response('article');
}
#[Route('/article', name: 'article_en', locale: 'en')]
public function indexEn(): Response
{
return new Response('user');
}
}
?>
Результат выполнения кода для запроса с локалью 'ru':
"article"
Результат выполнения кода для запроса с локалью 'en':
"user"
Смотрите также
-
атрибут
Route,
который вешает метод контроллера на указанный URL -
параметр
name,
который задаёт имя маршрута -
параметр
requirements,
который задаёт требования к параметрам маршрута -
параметр
defaults,
который задаёт значения по умолчанию для параметров