laravel線上環境表單驗證重定向問題解決方案

Jouzeyu 發表於 2021-04-08

前言

不知道大家有沒有很常用laravel的表單驗證,一般情況下,驗證欄位較多的時候,通常我們會在表單驗證類檔案中定義我們的驗證規則。在本地測試的時候,通常返回是正常的,如下圖:

laravel線上環境表單驗證重定向問題解決方案
但是放到線上的時候,就會重定向到前一個操作頁面,而不是正常顯示驗證資訊,那麼該如何解決呢?

我提供一個比較簡單的通用的解決方案,希望能給大家一些啟示,從而縮短在一些不必要的事情上的時間。

解決方案

我的解決辦法是建立了一個request基類,在基類中重寫了failedValidation方法,其他驗證類都繼承基類:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;

class BaseRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    public function failedValidation($validator)
    {

        $error= $validator->errors()->all();
        // $error = $validator;

        throw new HttpResponseException(response()->json(['status'=>'error','code'=>200,'message'=>$error));

    }
}

當然,返回的格式大家可以按照自己的來規定,我一般習慣與包含四個元素,一個是status來判斷是成功還是失敗,一個code返回狀態碼,一個message返回資訊以及一個data返回需要返回的資料。

以上就是laravel線上環境表單驗證重定向問題解決方案,希望能幫到你。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
空舟湖上~      ——Jouzeyu