laravel - Laravel 请求验证 required_if 有多个条件
问题描述
我想使用具有多个条件的 Laravel required_if 来实现验证。
我有一个对象数组,并且想要验证如果type=image并且对象的isUsed为 false,则需要该对象的属性。
return request()->validate([
'sets.*.attribute' => 'required_if:type=image && sets.*.isUsed=false',
]);
我该如何存档?
解决方案
您可以使用Rule
use Illuminate\Validation\Rule;
...
Rule::requiredIf(function () use ($request) {
$sets = collect($request->input('sets', []));
return $request->input('type') === 'image'
&& $sets->filter(fn($set) => $set['isUsed'])->isEmpty();
}),
假设$sets
对应于下面的值并且isUsed
必须false
在每一个集合上。
$sets = collect([
['isUsed' => false],
['isUsed' => false],
['isUsed' => false],
]);
文档中的更多信息:https ://laravel.com/docs/8.x/validation#rule-required-if
请注意,我使用的是PHP7.4 中的短箭头语法, fn() => ...
如果您使用的是较低的 PHP 版本,则必须使用标准匿名函数function () { ... }
推荐阅读
- ios - 您如何迁移到新的 SwiftUI 应用协议?
- java - 是否可以在 jar 中嵌入 gradle 插件?
- ruby - Ruby 项目帮助。无法从数组中获取保存的实例
- android - Android GRPC 客户端 http 调用错误 io.grpc.StatusException: UNAVAILABLE: End of stream or IOException
- python - Python在大矩阵中添加小矩阵
- swift - SwiftUi 拥有模型后,对行进行编号的最佳方法是什么
- oracle-apex - Web Source 操作的 URL 模式在分配参数时如何获取它的参数?
- python - 如何测试从模型中保存的方法?
- python - 从 AWS Lambda (Python) 连接到 IBM MQ(on-perm)
- python - Python,范围(),双循环,