如何检查当前url是否在Laravel有效?



我想做什么

laravel/线路/web.php

Route::get('sample', 'SampleController@index');

在本例中,http://localhost:8000/sample是有效的。

但是http://localhost:8000/test无效,因为它没有定义


当前代码

return Route::current() ? true : false;

它不返回null:

Route::current()返回IlluminateRoutingRoute

function isRoutePresent($urlToCheck)
{
$available_url = [];
$routes = Route::getRoutes();
foreach ($routes as $route) {
array_push($available_url, url($route->uri));
}
return in_array($urlToCheck, $available_url);
}

可以调用isRoutePresent("http://localhost:8000/test")返回truefalse

如果你想测试一个URI是否与注册路由匹配,你可以在路由集合上调用match:

$request = IlluminateHttpRequest::create('admin', 'get');
try {
$match = Route::getRoutes()->match($request);
} catch (SymfonyComponentHttpKernelExceptionNotFoundHttpException $e) {
// no match
}

虽然,我不完全确定你的意图是什么。

测试当前路由本身是否有效是没有意义的,因为它们是当前路由意味着它匹配了一个路由并且它是有效的。如果请求无效,则会返回404或坏方法异常。

最新更新