# 有条件的验证规则
### [](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`并且可用作访问输入和文件的对象。
- 基本说明
- 基本操作
- October cms 安装
- 后台控制器路径
- 图标
- 获取安装网上的插件/主题
- 插件构造器使用
- 定时任务
- October后台控制器
- vscode编辑器
- ajax操作
- 使用
- ajax更新组件
- ajax属性API
- JavaScript API
- ajax综合使用
- 主题
- 多语言主题
- 安装市场主题
- 主题程序处理
- 主题
- 页面
- 部件
- 布局
- 内容
- 组件
- 媒体
- 主题表单操作
- 表单使用
- 表单后端程序处理
- 插件
- 自定义插件
- 插件说明
- 插件导航条
- 插件数据库设置
- 插件的设置管理
- 插件的配置文件config
- 组件
- app服务
- app容器
- 扩展行为
- 缓存
- Collection类
- Lazy Collections
- Collection方法
- 助手函数
- 数组助手函数
- 路径助手函数
- 玄乐助手函数
- 其他助手函数
- 错误与记录
- 事件处理
- HTML页面
- 文件与目录操作
- 散列和加密
- 邮件
- 邮件内容
- 邮件发送
- 分页
- 模板解析器
- 动态解析器语法
- 队列消息
- 请求与输入
- 响应
- 视图
- 路由器
- 配置
- 验证操作
- 处理错误消息
- 错误消息与视图
- 可用的验证规则
- 有条件的验证规则
- 验证数组
- 错误消息
- 自定义验证规则
- 模型操作
- 定义模型与其属性
- 检索模型
- 插入与更新
- 删除模型
- 查询范围
- 事件操作
- 关联操作
- 定义关系
- 关系类型
- 多肽关系
- 关系查询
- 渴望加载
- 插入模型
- 数据库操作
- 基本用法
- 数据表结构
- 查询连贯操作
- 结果检索
- select子句
- 插入更新
- where子句
- 排序,分组,限制和偏移
- 文件附件
- Collection操作
- 属性操作
- 系列化json
- 数据库属性
- 数据库行为
- 控制器
- 后台控制器定义
- 后台页面
- 后台组件
- 后台表单
- 表单组件
- 表单视图
- 表单行为
- 后台列表
- 列表行为
- 列表过滤器
- 可用列类型
- 关系行为
- 关系行为类型
- 扩展关系行为
- 列表排序操作
- 导入导出操作
- 用于与权限
- corlate模板修改
- 修改顶部导航
- laravel问题
- 控制器不存在
- 控制器
- 路由组
- laravel笔记
- laravel 安装
- 伪静态配置
- 依赖注入 & 控制器
- 中间件
- 路由文件
- 视图