Laravel проверить, существует ли маршрут для данного URL внутри маршрутов

Предоставляя URL, я хотел бы знать, есть ли способ определить, существует ли URL в моем приложении Laravel (по сравнению с «Как я могу проверить, существует ли URL через Laravel?«который хочет проверить внешний URL)?

Я пробовал это, но он всегда говорит мне, что URL не совпадает:

$routes = \Route::getRoutes();
$request = \Request::create('/exists');
try {
$routes->match($request);
// route exists
} catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e){
// route doesn't exist
}

1

Решение

В одном из моих приложений Laravel я достиг этого, выполнив следующее

private function getRouteSlugs()
{
$slugs  = [];
$routes = Route::getRoutes();

foreach ($routes as $route)
{
$parts = explode('/', $route->uri());
foreach ($parts as $part)
{
$slug    = trim($part, '{}?');
$slugs[] = $slug;
}
}

return array_unique($slugs);
}

Эта функция поможет получить всех слагов, которые зарегистрированы в Laravel, а затем с помощью простого in_array Вы можете проверить, был ли этот слизень зарезервирован.

РЕДАКТИРОВАТЬ

На основании вашего комментария вы можете расширить следующую функцию

private function getRouteSlugs()
{
$slugs  = [];
$routes = Route::getRoutes();

foreach ($routes as $route)
{
$slugs[] = $route->uri();
}

return array_unique($slugs);
}

Это даст вам массив предметов как таковой:

0 => "dashboard/news"1 => "dashboard/post/news"2 => "dashboard/post/news/{id}"3 => "dashboard/post/news"

Это должно быть достаточно просто для сравнения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector