1. 程式人生 > 程式設計 >laravel框架使用FormRequest進行表單驗證,驗證異常返回JSON操作示例

laravel框架使用FormRequest進行表單驗證,驗證異常返回JSON操作示例

本文例項講述了laravel框架使用FormRequest進行表單驗證,驗證異常返回JSON操作.分享給大家供大家參考,具體如下:

通常在專案中,我們會對大量的前端提交過來的表單進行驗證,如果不通過,則返回錯誤資訊。

前端為了更好的體驗,都使用ajax進行表單提交,雖然 validate() 方法能夠根據前端的不同請求方式,返回不同的結果。

但是返回的json格式並不是我們想要的,這個時候,我們就需要自定義返回錯誤結果。

先建立一個表單請求類:

php artisan make:request TestRequest

然後在 rules()messages() 方法裡填寫自已的驗證規則和訊息

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
class TestRequest extends FormRequest
{
  /**
   * 控制訪問許可權
   */
  public function authorize()
  {
    //注意,預設是false,改成true
    return true;
  }
  /**
   * 驗證規則
   */
  public function rules()
  {
    return [
      'name' => 'required','pwd' => 'required',];
  }
  /**
   * 驗證訊息
   */
  public function messages()
  {
    return [
      'name.required' => '姓名必填','pwd.required' => '密碼必填',];
  }
}

注意,父類 FormRequest中的 failedValidation() 方法用來處理驗證失敗,我們重寫父類方法,來實現自已的返回。

public function failedValidation(Validator $validator)
{
  throw (new HttpResponseException(response()->json([
    'status_code' => 500,'message' => '請求錯誤','data' => $validator->errors()->first(),],200)));
}

注意 failedValidation()

方法的 $validator 引數是 Illuminate\Contracts\Validation\Validator 物件,不是 Illuminate\Validation\Validator,不要搞錯了。

更多關於Laravel相關內容感興趣的讀者可檢視本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向物件程式設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》

希望本文所述對大家基於Laravel框架的PHP程式設計有所幫助。