近期在使用Laravel框架做网站建设时,遇到了用validate验证时,如果是错误,则会自动返回首页。反复浏览了官网上的帮助文件和搜索,最终解决了这个问题,具体方法如下:
1、原因分析:
在请求头header中,accept使用appclication/json,使HTTP请求的接受返回只能是json格式。
2、解决办法:
首先是修改框架函数:
//vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136 //将该方法中的$this->getRedirectUrl()去掉 //不建议使用,一般情况下尽量不要修改框架的代码
接着是定义一个BaseRequest基类:
<?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' => [] ]))); } }
结束语:以上就是现目前采用的办法,可能不是最完美的解决方法,但基本实现了自己的要求,如果你有更好的解决办法我们可以一起来交流。
地址:绵阳市临园路东段78号B座13层
电话:0816-6339181
邮箱:kf@kf51.cn
微信公众号:
Copyright © 绵阳动力网站建设 www.kf51.cn All Rights Reserved 蜀ICP备08100083号