Команда debug:router
Команда debug:router выводит таблицу всех
маршрутов, зарегистрированных в приложении Symfony.
Для каждого маршрута показывается его имя, HTTP-метод,
путь URL и привязанный контроллер. Первым параметром
можно передать имя конкретного маршрута, чтобы получить
подробную информацию только о нём. Команда доступна
только в окружении разработки и помогает быстро
находить нужные адреса и проверять корректность
настроек роутинга.
Синтаксис
php bin/console debug:router [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('/', name: 'article_index')]
public function index(): Response
{
return new Response('hello');
}
#[Route('/user/{name}', name: 'article_user')]
public function user(string $name): Response
{
return new Response($name);
}
}
?>
Теперь выведем список всех маршрутов:
php bin/console debug:router
Результат выполнения команды:
-------- --------------- -------- ------ -----------------------
Name Method Scheme Host Path
-------- --------------- -------- ------ -----------------------
article_index ANY ANY ANY /
article_user ANY ANY ANY /user/{name}
-------- --------------- -------- ------ -----------------------
Пример
Давайте получим подробную информацию о конкретном маршруте
article_user:
php bin/console debug:router article_user
Результат выполнения команды:
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | article_user |
| Path | /user/{name} |
| Path Regex | #^/user/(?P<name>[^/]++)$#sD |
| Host | ANY |
| Scheme | ANY |
| Methods | ANY |
| Defaults | _controller: App\Controller\ArticleController::user() |
| Requirements | NO CUSTOM |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+---------------------------------------------------------+
Здесь видно регулярное выражение пути, требования к параметрам, привязанный контроллер и другие настройки маршрута.
Пример
Давайте ограничим маршрут только GET-запросом и
зададим требование к параметру 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', methods: ['GET'], requirements: ['name' => '\d+'])]
public function user(string $name): Response
{
return new Response($name);
}
}
?>
Теперь выведем информацию о маршруте:
php bin/console debug:router article_user
Результат выполнения команды:
+--------------+---------------------------------------------------------+
| Property | Value |
+--------------+---------------------------------------------------------+
| Route Name | article_user |
| Path | /user/{name} |
| Path Regex | #^/user/(?P<name>\d+)$#sD |
| Host | ANY |
| Scheme | ANY |
| Methods | GET |
| Defaults | _controller: App\Controller\ArticleController::user() |
| Requirements | name: \d+ |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+---------------------------------------------------------+
В колонке Requirements появилось требование
name: \d+, а в Methods - только
GET.
Смотрите также
-
команда
router:match,
которая показывает, какой маршрут соответствует URL -
команда
debug:container,
которая выводит список сервисов контейнера -
команда
list,
которая выводит список всех доступных команд -
команда
help,
которая показывает справку по команде