繁体   English   中英

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

[英]How do you check if a path is valid in 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。 现在,当路径有效时,当我调用app('request')->create()将路径转换为路由时,我(从逻辑上)得到NotFoundHttpException

app\\Exceptions\\Handler.php中的render()函数中做一些app\\Exceptions\\Handler.php的唯一方法是吗? 如果是这样,我不清楚如何通过编程创建请求来区分有效的404(用户页面请求)和异常。

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

否则,($ 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;
}

暂无
暂无

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

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