Параметр defaults атрибута Route
Параметр defaults атрибута Route задаёт
значения по умолчанию для параметров URL. Он
принимает ассоциативный массив, где ключи - имена
параметров маршрута, а значения - то, что будет
подставлено, если в адресе параметр отсутствует.
Синтаксис
#[Route(path, name: name, defaults: ['param' => value])]
Пример
Давайте зададим значение по умолчанию для параметра
name. Если перейти на адрес /user без
имени, подставится строка 'guest':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
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
Пример
Давайте зададим значения по умолчанию сразу для
нескольких параметров category и
page:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/list/{category}/{page}', name: 'article_list', defaults: ['category' => 'all', 'page' => 1])]
public function list(string $category, int $page): Response
{
return new Response($category . ' ' . $page);
}
}
?>
Результат выполнения кода для адреса /list:
all 1
Пример
Параметр defaults можно использовать вместе
с requirements, чтобы ограничить значения
параметра, когда он передан явно:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentRoutingRequirementRequirement;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show', defaults: ['id' => 1], requirements: ['id' => Requirement::DIGITS])]
public function show(int $id): Response
{
return new Response((string) $id);
}
}
?>
Результат выполнения кода для адреса /article:
"1"
Смотрите также
-
параметр
requirements,
который задаёт регулярное выражение для параметра -
параметр
path,
который задаёт путь маршрута -
параметр
name,
который задаёт имя маршрута -
атрибут
Route,
который вешает метод контроллера на URL