如何检查Laravel 5中的路径是否有效?

时间:2017-03-04 21:08:47

标签: php laravel laravel-5

我正在构建一个简单的功能,您可以将destination查询参数传递到/login页面,导致您被重定向到该页面而不是我设置的默认行为

目标存储在会话中,然后用于重定向我的LoginController内部。

这是我的代码:

if ($destination = session('login_redirect')) { . 
    $route = app('router')->getRoutes()->match(app('request')->create($destination));
    $destination_route = route($route->getName(), $route->parameters());
}

如果路径有效,我只需要重定向,我想在决定重定向之前检查一下。有效的,我的意思是它是Laravel将返回200的URL。现在,当路径有效时,我(在逻辑上)在我呼叫NotFoundHttpException以将路径转换为路线时获得app('request')->create()

render()的{​​{1}}函数中执行某些恶作剧的唯一方法是什么?如果是这样,我不清楚如何区分有效的404(用户页面请求)和我通过编程方式创建请求而获得的异常。

1 个答案:

答案 0 :(得分:0)

如何检查$ destination变量是否设置且不为空,如果是,只需重定向到该给定目标。

else,($ destination在会话中设置但与应用程序中存在的任何路由不匹配)抛出一个新的异常并将其命名为任意,然后最终在app/Exceptions/handler.php中捕获该异常,或者你可以简单地重定向到这个else语句中的默认路径。代码看起来像这样:

$destination = session('login_redirect')
if ($destination && $destination != "" )) {
    try {
        $route = app('router')->getRoutes()->match(app('request')->create($destination));
        $destination_route = route($route->getName(), $route->parameters());
    }
    catch(Exception $e) {
        return $e
        // OR
        throw new Myexception;
    }
}
else {
    return redirect("foobar");
    // OR
    throw new MyException;
}