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'
        ]);
    }
}
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

请求头加Accept。

file

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

请求头加Accept。

file

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

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

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

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