繁体   English   中英

Laravel firstOrFail函数重定向到错误的路由

[英]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.

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