[英]Laravel firstOrFail functions redirects to wrong route
信息:我所有的路线都像/locale/something
,例如/en/home
可以正常工作。
在我的控制器中,我正在使用firstOrFail()
函数。
当失败部分被触发时,该函数尝试将我发送到/home
。 这不起作用,因为它必须是/en/home
。
那么,如何调整firstOrFail()
函数将我发送到/locale/home
? 需要改变什么?
您可以通过几种方式对其进行处理。
每次找不到记录时,只要要将查询重定向到特定视图,都可以在try-catch周围添加查询:
class MyCoolController extends Controller {
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Redirect;
//
function myCoolFunction() {
try
{
$object = MyModel::where('column', 'value')->firstOrFail();
}
catch (ModelNotFoundException $e)
{
return Redirect::to('my_view');
// you could also:
// return redirect()->route('home');
}
// the rest of your code..
}
}
唯一的缺点是,您需要在要使用firstOrFail()
方法的任何地方进行处理。
如建议的注释所示,您可以在Global Exception Handler中定义它:
app / Exceptions / Handler.php
# app/Exceptions/Handler.php
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Redirect;
// some code..
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException && ! $request->expectsJson())
{
return Redirect::to('my_view');
}
return parent::render($request, $exception);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.