Проверьте, существует ли маршрут в Symfony 4 - PullRequest
0 голосов
/ 27 июня 2019

Как проверить, существует ли данный маршрут в Symfony 4, используя имя маршрута.

rout.yaml

home:
  path: /
  controller: App\Controller\Home::index
  methods: [GET]

login:
  path: /login
  controller: App\Controller\Login::index
  methods: [GET]

Контроллер (здесь используется метод exists())

$routes->exists('home'); // true
$routes->exists('login'); // true
$routes->exists('foo'); // false

1 Ответ

0 голосов
/ 27 июня 2019

Из документации Symfony 4 ...

Проверьте, существует ли маршрут

В высокодинамичных приложениях может потребоваться проверить, существует ли маршрут, прежде чем использовать его для создания URL-адреса. В этих случаях не используйте метод getRouteCollection (), потому что он регенерирует кэш маршрутизации и замедляет работу приложения.

Вместо этого попробуйте сгенерировать URL-адрес и перехватить исключение RouteNotFoundException, если маршрут не существует:

use Symfony\Component\Routing\Exception\RouteNotFoundException;

// ...

try {
    $url = $generator->generate($dynamicRouteName, $parameters);
} catch (RouteNotFoundException $e) {
    // the route is not defined...
}

Вы можете поместить этот код в функцию и вернуть все, что вам нужно.

...