No Drupal 8, preciso verificar se existe uma rota ou não em um módulo personalizado. Como posso conseguir isso?
9
/* @var \Drupal\Core\Routing\RouteProviderInterface $route_provider */
$route_provider = \Drupal::service('router.route_provider');
$route_provider->getRouteByName('abc.xyz');
RouteProviderInterface::getRouteByName()
retorna um \Symfony\Component\Routing\Route
objeto, se existir, ou lança uma exceção, se não existir.
Você pode usar RouteProviderInterface::getRoutesByNames()
se não desejar uma exceção.
$exists = count($route_provider->getRoutesByNames(['abc.xyz'])) === 1;
getRoutesByNames()
ainda pode gerar uma exceção, se ela obtiver uma matriz vazia como parâmetro. No caso de matrizes criadas dinamicamente, é melhor capturar a exceção ou verificar se a matriz passada para o método não está vazia.Para verificar se a rota existe ou não use a função abaixo:
fonte
$this
, isso não é uma função, mas um método de uma classe. Você não diz exatamente qual classe.(null === $router->getRouteCollection()->get($name)) ? false : true
é desnecessariamente complicado. Não há necessidade de uma operação ternária, pois===
já retorna um booleano.