多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 有条件的验证规则 ### [](https://octobercms.com/docs/services/validation#conditionally-adding-rules)有条件地添加规则 在某些情况下,**仅**当输入数组中存在该字段时,您才可能希望对该字段运行验证检查。要快速完成此操作,请将`sometimes`规则添加到规则列表中: ~~~ $v = Validator::make($data, [ 'email' => 'sometimes|required|email', ]); ~~~ 在上面的示例中,`email`只有在`$data`数组中存在该字段时,该字段才会被验证。 #### 复杂的条件验证 有时,您可能希望仅当另一个字段的值大于100时才需要一个给定的字段。或者,可能仅当存在另一个字段时,才需要两个字段来具有给定的值。添加这些验证规则不必费劲。首先,`Validator`使用永远不变的*静态规则*创建一个实例: ~~~ $v = Validator::make($data, [ 'email' => 'required|email', 'games' => 'required|numeric', ]); ~~~ 假设我们的Web应用程序是供游戏收集者使用的。如果游戏收藏家在我们的应用程序中注册并且拥有超过100款游戏,我们希望他们解释为什么拥有这么多游戏。例如,也许他们经营一个游戏转售店,或者他们只是喜欢收藏。要有条件地添加此要求,我们可以`sometimes`在`Validator`实例上使用方法。 ~~~ $v->sometimes('reason', 'required|max:500', function($input) { return $input->games >= 100; }); ~~~ 传递给该`sometimes`方法的第一个参数是我们有条件验证的字段的名称。第二个参数是我们要添加的规则。如果`Closure`传递的第三个参数返回`true`,则将添加规则。这种方法使构建复杂的条件验证变得轻而易举。您甚至可以一次为多个字段添加条件验证: ~~~ $v->sometimes(['reason', 'cost'], 'required', function($input) { return $input->games >= 100; }); ~~~ > **注意:**`$input`传递给您的参数`Closure`将是的实例,`Illuminate\Support\Fluent`并且可用作访问输入和文件的对象。