Php Laravel firstOrFail函数重定向到错误路径

Php Laravel firstOrFail函数重定向到错误路径,php,laravel,laravel-5,exception,request,Php,Laravel,Laravel 5,Exception,Request,信息:我所有的路线看起来都像这样,例如/en/home 很好 在我的控制器中,我正在使用firstOrFail()函数 当触发故障部件时,功能会尝试将我发送到/home。 这不起作用,因为它需要是/en/home 那么,如何调整firstOrFail()函数以将我发送到/locale/home? 什么需要改变?你可以用几种方法来处理它 具体做法 每次找不到记录时,只要您想重定向到特定视图,就可以使用try-catch将查询包围起来: class MyCoolController extends

信息:我所有的路线看起来都像这样,例如
/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()
方法处理此问题

全球方式 如建议的注释所示,您可以在以下内容中定义它:

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);
}

Fail抛出一个异常,然后在
Exceptions\Handler
类中处理该异常,并显示一个错误页面。因此,您可能正在自己处理此问题,并将其重定向到
主页。看起来它会帮助你,通常它会返回一个404而不重定向到另一个url。检查您的异常处理程序。@q55awr很乐意帮助您。