繁体   English   中英

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

[英]How to check if current url is valid in Laravel?

我想做的事

laravel/routes/web.php

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

在这种情况下,http://localhost:8000/sample 是有效的。

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


当前代码

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

它不返回 null:

\Route::current()返回\Illuminate\Routing\Route

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 = \Illuminate\Http\Request::create('admin', 'get');

try {
    $match = Route::getRoutes()->match($request);
} catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e) {
    // no match
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM