laravel8中如何让表单验证器只允许指定字段被提交?
1. 运行环境#
1). 当前使用的 Laravel 版本?#
laravel8
2). 当前使用的 php/php-fpm 版本?#
PHP 版本:php7.4
php-fpm 版本:无
3). 当前系统#
windows 10
4). 业务环境#
开发环境
5). 相关软件版本#
mysql8
2. 问题描述?#
postman 提交了这个数据
{
"name":"test",
"description":"des",
"aaa":"123"
}
我在 laravel 的表单验证器里面写了如下验证规则
3. 您期望得到的结果?#
我希望 postman 只能提交 name
和 description
这两个字段,一旦提交多余的字段就会在返回错误信息。
不在 controller 层写任何的逻辑。能否直接在表单验证器的某个设置选项或者重写某个方法达到我的目的?
4. 您实际得到的结果?#
我的 contoller 中写的代码如下,也确实可以拿到。但是我就是不希望可以提交额外的字段😂
5. 我有这个想法的原因#
springboot 中接收一个 json 的时候,可以用一个对象来接收的。
这个对象只有 a 和 b 两个属性。
一旦接收的 json 里面包含 a 和 b 之外的属性就会返回错误。
因此我感觉 laravel 也有这个能力,但是我核对了文档 表单验证这个文档,确实没有找到相关设置。
使用 "前置验证器 (prepareForValidation)" 或 "后置验证器 (passedValidation)" 。
两个验证器的位置在 vendor\laravel\framework\src\Illuminate\Validation\ValidatesWhenResolvedTrait.php
推荐文章: