Laravel 的 validate() 方法不生效

环境

PHP 7.3
Laravel 7.25.0

问题

使用 validate() 方法对请求字段进行验证,但是不管我带不带参数,带什么参数,validate() 都如同无效一般。使用 apizza 测试理论应该返回 422 ,实际返回的都是 200。

在线访问地址:la.alrcly.com/banner?id=1

web.php 文件

定义了一个路由

Route::get('banner', 'BannerController@getBanner');

BannerController.php 文件

继承自基类 App\Http\Controllers\Controller,因此所有这些控制器都使用了 ValidatesRequests Trait,进而可以使用该 Trait 中提供的 validate() 方法对请求字段进行验证。

定义了 getBanner() 方法,使用 validate() 方法对请求字段进行验证。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class BannerController extends Controller
{
    public function getBanner(Request $request)
    {
        $this->validate($request,[
            'id' => 'numeric'
        ]);
    }
}
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

请求头加Accept。

file

4年前 评论
萧俊介 (楼主) 4年前
萧俊介 (楼主) 4年前
讨论数量: 4
    Validator::make($request->all(),['id' => 'required'],$messages)->validate();
4年前 评论
sunny123456 4年前
萧俊介 (楼主) 4年前
萧俊介 (楼主) 4年前
sunny123456 4年前
oliver-l (作者) 4年前
sunny123456 4年前
oliver-l (作者) 4年前
sunny123456 4年前

请求头加Accept。

file

4年前 评论
萧俊介 (楼主) 4年前
萧俊介 (楼主) 4年前

表单请求验证 是继承于 FormRequestFormRequest 里有个方法 failedValidation(Validator $validator),这个方法是处理验证失败后如何返回的。可以重载这个方法,让其直接返回 JSON 格式的数据就好了。

/*
额外馈赠,$validator 参数可以调用 errors() 来获取验证失败信息 ,调用first() 来指定只获取一条
*/
$validator->errors()->first()
4年前 评论
ChenRuihua 4年前
萧俊介 (作者) (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!