Di Drupal 8, saya perlu memverifikasi rute ada atau tidak dalam modul khusus. Bagaimana saya bisa mencapai ini?
9
/* @var \Drupal\Core\Routing\RouteProviderInterface $route_provider */
$route_provider = \Drupal::service('router.route_provider');
$route_provider->getRouteByName('abc.xyz');
RouteProviderInterface::getRouteByName()
mengembalikan \Symfony\Component\Routing\Route
objek jika ada, atau melempar pengecualian jika tidak.
Anda dapat menggunakan RouteProviderInterface::getRoutesByNames()
jika Anda tidak ingin pengecualian.
$exists = count($route_provider->getRoutesByNames(['abc.xyz'])) === 1;
getRoutesByNames()
masih bisa memunculkan eksepsi, jika mendapat array kosong sebagai parameter. Dalam hal array yang dibuat secara dinamis, lebih baik untuk menjebak pengecualian, atau memverifikasi array yang diteruskan ke metode tidak kosong.Untuk memeriksa rute yang ada atau tidak, gunakan fungsi di bawah ini:
sumber
$this
, itu bukan fungsi, tetapi metode kelas. Anda tidak mengatakan kelas mana, tepatnya.(null === $router->getRouteCollection()->get($name)) ? false : true
tidak perlu rumit. Tidak perlu operasi ternary, karena===
pengembalian sudah menjadi boolean.