當我們在使用validate等方法進行驗證時,如果是錯誤,則會返回首頁
1、直接在請求頭中
在請求頭header中,accept使用appclication/json,使HTTP請求的接受返回只能是json格式。
2、修改框架函數
1
2
3
|
//vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136 //將該方法中的$this->getRedirectUrl()去掉 //不建議使用,一般情況下盡量不要修改框架的代碼 |
3、建議使用
定義一個BaseRequest基類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<?php namespace App\Http\Requests; use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Exceptions\HttpResponseException; class BaseRequests extends FormRequest { /** * validate驗證失敗模板 * @param Validator $validator */ protected function failedValidation(Validator $validator ) { $message = '' ; foreach (json_decode(json_encode( $validator ->errors()),1) as $error ){ $message = $error [0]; break ; } throw ( new HttpResponseException(response()->json([ 'code' => 400, 'msg' => $message , 'data' => [] ]))); } } |
個人認為這個方法一言難盡,不是很好。
4、最終我使用的解決辦法
在JSON請求時,頭部的Accept指定為appliaction/json即可解決,當為JSON訪問時,則返回錯誤信息正常,非JSON時返回首頁,一定程度也是一個保護呢。
到此這篇關于Laravel使用驗證時跳轉到首頁的解決辦法的文章就介紹到這了,更多相關Laravel驗證跳轉到首頁內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/woshissss/article/details/120397036