Параметр name атрибута Route
Атрибут Route вешается на метод
контроллера и задаёт адрес страницы. Параметр
name задаёт уникальное имя маршрута.
Это имя используется для генерации URL через
функцию path в Twig или метод generate
сервиса UrlGenerator. Имена маршрутов должны
быть уникальными в пределах приложения.
Синтаксис
#[Route(path, name: name)]
Пример
Давайте создадим маршрут с именем 'article_index':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
return new Response('hello');
}
}
?>
Теперь этот маршрут можно сгенерировать по имени:
<a href="{{ path('article_index') }}">Home</a>
Результат выполнения кода:
<a href="/">Home</a>
Пример
Давайте создадим маршрут с параметром и именем
'article_show':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show')]
public function show(int $id): Response
{
return new Response('article ' . $id);
}
}
?>
Сгенерируем URL с передачей параметра id:
<a href="{{ path('article_show', {id: 5}) }}">Article</a>
Результат выполнения кода:
<a href="/article/5">Article</a>
Пример
Давайте сгенерируем URL по имени маршрута
из контроллера с помощью метода generate:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show')]
public function show(int $id): Response
{
return new Response('article ' . $id);
}
#[Route('/link', name: 'article_link')]
public function link(UrlGeneratorInterface $urlGenerator): Response
{
$res = $urlGenerator->generate('article_show', ['id' => 10]);
return new Response($res);
}
}
?>
Результат выполнения кода для адреса /link:
"/article/10"
Смотрите также
-
атрибут
Route,
который вешает метод контроллера на указанный URL -
параметр
path,
который задаёт путь маршрута -
параметр
methods,
который ограничивает маршрут HTTP-методами -
класс
UrlGenerator,
который генерирует URL по имени маршрута