使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊

YeRic發表於2019-08-23

在開發專案的時候,資料的驗證是必不可少的一環。在laravel中我們可以把這塊的邏輯單獨獨立出來。
以提高我們的程式碼的可閱讀性。

使用的laravel 框架 是5.3
那我們使用了以下命令建立了驗證類後,我們怎麼進行統一的驗證錯誤訊息返回呢?

$ php artisan make:request RoleRequest

我們的專案在ajax或Http的時候 都有統一的返回格式。如:

return response()->json([
            'code'   => $code,
            'status' => $status == 1 ? 'SUCCESS' : 'FAIL',
            'msg'    => $msg,
            'data'   => $data,
        ]);

我們希望在驗證資料有錯誤時,返回的資訊的格式也要按這個格式。以方便我們前端好處理。

找到框架的異常處理類
路徑:app\Exceptions\Handler.php
在這個類檔案中有兩個方法:report() 記錄異常資訊, render() 異常響應輸出

我們在render() 方法中寫下如下程式碼。

if ($exception instanceof ValidationException) {
            if($request->ajax()){
                $errorMsg = toiIndexArr(json_decode($exception->getResponse()->getContent(),true));
                return returnData(10002,0,[$errorMsg],$errorMsg[0]);
            }
        }

思路:
1.判斷異常是否來自於 驗證異常
2.判斷是否是ajax請求
3.獲取驗證錯誤資訊並處理成索引陣列,原來是關聯陣列。
4.統一格式返回。

針對這些問題,讓我們共同參與,做一個laravel 的佈道者,同時也能提升你自身的能力。

相關文章