用途
bitrix-validation 围绕 Bitrix\Main\Validation 命名空间,说明如何在 Bitrix 框架中使用基于属性的验证。它面向需要在服务与控制器中校验输入数据的开发者,属于该框架验证能力的技能文档。
基线版本
- 基线:main 23.0+
- 已验证:main 26.800.0
整个命名空间自 main 24.300 起提供。在此之前,需要在服务中手动检查输入并返回 Result 错误(相关主题为 bitrix-result-and-errors)。
主要能力与主题
该技能按主题组织为若干文档,覆盖以下内容:
- 规则属性、DTO、嵌套对象、集合、分组、ValidationService —— 见 rules/rules-dto.md
- 控制器输入:作用于 action 参数的规则、ValidationParameter DTO —— 见 rules/controller.md
- 自定义规则属性与验证器、错误码 —— 见 rules/custom.md
涉及的规则属性示例包括 NotEmpty、Length、Email、RegExp 等。
使用方式与固定约束
技能列出了以下需要遵循的不变量:
- 获取服务:通过 ServiceLocator::getInstance()->get('main.validation.service'),或在服务构造器中以类型提示注入 ValidationService(无状态)。
- 不存在 .settings.php 的 validation 配置段,也不存在 #[ValidationParameter] 属性。
- 命名约定:使用 RegExp(而非 Regex)、errorMessage(而非 message)。
- 错误不提供 getField():字段路径位于 getCode() 中,例如 email、items.0.name。
- 作用于 action 参数的规则、分组、#[Json]、#[OnlyOneOfPropertyRequired] 自 main 26.250* 起提供。在 25.x 上,作用于 action 参数的规则会被静默忽略,此时应改为验证 DTO。
- ValidationResult 继承自 Result:应通过服务的 Result 向上传递其错误,而不是抛出异常。
适用场景
适用于在 Bitrix 框架服务层与控制器层校验输入数据的场景,包括对简单字段(非空、长度、邮箱、正则等)的校验、对嵌套对象与集合的校验、按分组组织规则,以及在控制器 action 参数上声明校验规则。
限制
- 命名空间自 main 24.300 起可用,更低版本需手动检查输入。
- 部分能力(action 参数规则、分组、#[Json]、#[OnlyOneOfPropertyRequired])仅在 main 26.250* 及以上版本生效,25.x 会被静默忽略。
- 错误中无法通过 getField() 获取字段路径,只能从 getCode() 读取。
- 不存在 .settings.php 的 validation 配置段与 #[ValidationParameter] 属性。
关于该技能的收费、价格或具体安装步骤,资料中暂未提供。