我正在构建一个简单的功能,您可以将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(用户页面请求)和我通过编程方式创建请求而获得的异常。
答案 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;
}