web-dev-qa-db-ja.com

ルートが存在することを確認するにはどうすればよいですか?

Drupal 8では、カスタムモジュールにルートが存在するかどうかを確認する必要があります。これを行うにはどうすればよいですか?

9
harsh_behl_0007
_/* @var \Drupal\Core\Routing\RouteProviderInterface $route_provider */
$route_provider = \Drupal::service('router.route_provider');
$route_provider->getRouteByName('abc.xyz');
_

RouteProviderInterface::getRouteByName()は、存在する場合は_\Symfony\Component\Routing\Route_オブジェクトを返し、存在しない場合は例外をスローします。

例外が必要ない場合は、RouteProviderInterface::getRoutesByNames()を使用できます。

_$exists = count($route_provider->getRoutesByNames(['abc.xyz'])) === 1;
_
10
Daniel

ルートが存在するかどうかを確認するには、以下の機能を使用しないでください:

function routeExists($name)
{
    // I assume that you have a link to the container in your twig extension class
    $router = $this->container->get('router');
    return (null === $router->getRouteCollection()->get($name)) ? false : true;
}
6
Nikhil Banait