绵阳动力网站建设

Laravel框架中使用validate验证时跳转到首页的原因及解析办法

时间:2021-10-18

Laravel框架中使用validate验证时跳转到首页的原因及解析办法

近期在使用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' => []
        ])));
    }
}

结束语:以上就是现目前采用的办法,可能不是最完美的解决方法,但基本实现了自己的要求,如果你有更好的解决办法我们可以一起来交流。

Copyright © 绵阳动力网站建设 www.kf51.cn All Rights Reserved 蜀ICP备08100083号

客服微信
客服微信
0816-6339181
客服微信
my_dongli