In Drupal 8 muss ich überprüfen, ob eine Route in einem benutzerdefinierten Modul vorhanden ist oder nicht. Wie kann ich das erreichen?
9
/* @var \Drupal\Core\Routing\RouteProviderInterface $route_provider */
$route_provider = \Drupal::service('router.route_provider');
$route_provider->getRouteByName('abc.xyz');
RouteProviderInterface::getRouteByName()
Gibt ein \Symfony\Component\Routing\Route
Objekt zurück, falls vorhanden, oder löst eine Ausnahme aus, wenn dies nicht der Fall ist.
Sie können verwenden, RouteProviderInterface::getRoutesByNames()
wenn Sie keine Ausnahme wünschen.
$exists = count($route_provider->getRoutesByNames(['abc.xyz'])) === 1;
getRoutesByNames()
dies immer noch eine Ausnahme auslösen kann, wenn ein leeres Array als Parameter abgerufen wird. Bei dynamisch erstellten Arrays ist es besser, die Ausnahme abzufangen oder sicherzustellen, dass das an die Methode übergebene Array nicht leer ist.Um zu überprüfen, ob eine Route vorhanden ist oder nicht, verwenden Sie die folgende Funktion:
quelle
$this
wird, ist dies keine Funktion, sondern eine Methode einer Klasse. Sie sagen nicht genau, welche Klasse.(null === $router->getRouteCollection()->get($name)) ? false : true
ist unnötig kompliziert. Eine ternäre Operation ist nicht erforderlich, da===
bereits ein Boolescher Wert zurückgegeben wird.