前言
不知道大家有沒有很常用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 協議》,轉載必須註明作者和本文連結