簡體   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