SuperAPI AI 工具集

bitrix-validation

编程与开发

查看项目

更新于 10-15 16:29

技能介绍

用途

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] 属性。

关于该技能的收费、价格或具体安装步骤,资料中暂未提供。