Параметр path атрибута Route
Параметр path атрибута Route задаёт путь URL,
по которому будет доступен метод контроллера. Это первый
параметр атрибута, поэтому его можно передавать без имени.
Путь может быть статическим, например '/article',
или содержать динамические сегменты в фигурных скобках,
например '/user/{name}'. Значения динамических
сегментов попадают в аргументы метода контроллера.
Если параметр path не указан, Symfony использует
пустую строку и маршрут срабатывает на корневой адрес.
Синтаксис
#[Route(path, name: name)]
Пример
Давайте повесим метод контроллера на статический
адрес '/article':
<?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', name: 'article_index')]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода для адреса /article:
hello
Пример
Давайте передадим динамический сегмент name
из пути в аргумент метода:
<?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('/user/{name}', name: 'article_user')]
public function user(string $name): Response
{
return new Response($name);
}
}
?>
Результат выполнения кода для адреса /user/abcde:
abcde
Пример
Давайте зададим значение сегмента по умолчанию
через параметр defaults, чтобы адрес работал
и без сегмента в пути:
<?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('/user/{name}', name: 'article_user', defaults: ['name' => 'guest'])]
public function user(string $name): Response
{
return new Response($name);
}
}
?>
Результат выполнения кода для адреса /user:
guest
Смотрите также
-
атрибут
Route,
который вешает метод контроллера на URL -
параметр
name,
который задаёт имя маршрута -
параметр
requirements,
который задаёт требования к сегментам пути -
параметр
defaults,
который задаёт значения сегментов по умолчанию