阅读(175)
赞(10)
Laravel 8 复杂条件验证
2021-06-28 14:47:52 更新
有时候你可能需要增加基于更复杂的条件逻辑的验证规则。例如,你可以希望某个指定字段在另一个字段的值超过 100 时才为必填。或者当某个指定字段存在时,另外两个字段才能具有给定的值。增加这样的验证条件并不难。首先,使用 静态规则 创建一个 Validator
实例:
$v = Validator::make($data, [
'email' => 'required|email',
'games' => 'required|numeric',
]);
假设我们有一个专为游戏收藏家所设计的网页应用程序。如果游戏收藏家收藏超过一百款游戏,我们会希望他们来说明下为什么他们会拥有这么多游戏。比如说他们有可能经营了一家游戏分销商店,或者只是为了享受收集的乐趣。为了在特定条件下加入此验证需求,可以在 Validator
实例中使用 sometimes
方法。
$v->sometimes('reason', 'required|max:500', function ($input) {
return $input->games >= 100;
});
传递给 sometimes
的第一个参数是我们需要有条件验证的名称字段,第二个参数是我们想要添加的规则,如果作为第三个参数的 闭包
返回 true
,则规则被添加。该方法让构建复杂条件验证变得简单,你甚至可以一次为多个字段添加条件验证:
$v->sometimes(['reason', 'cost'], 'required', function ($input) {
return $input->games >= 100;
});
技巧:传递给
闭包
的$input
参数是Illuminate\Support\Fluent
的一个实例,可用于访问输入和文件。