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
在你的验证器里的后置函数里写一下可以