回调

编辑该页面

回调

回调约束的目的是创建完全自定义的验证规则和分配任何验证错误对象特定字段。如果你使用验证与形式,这意味着,而不是显示自定义错误的形式,您可以显示他们适用于旁边的领域。

这个过程通过指定一个或多个工作回调方法,每一个都将被称为验证过程中。这些方法可以做任何事情,包括创建和分配验证错误。

请注意

一个回调方法本身没有失败或返回任何值。相反,您将看到在这个例子中,一个回调方法直接添加验证器“违规”的能力。

适用于 属性/方法
回调
验证器 CallbackValidator

配置

  • 属性
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ / src /实体/ Author.php名称空间应用程序\实体;使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;使用欧宝娱乐app下载地址\组件\验证器\上下文\ExecutionContextInterface;作者{#(断言\回调)公共函数验证(ExecutionContextInterface美元上下文,美元有效载荷){/ /……}}

回调方法

通过一个特殊的回调方法ExecutionContextInterface对象。你可以设置“侵犯”直接在这个对象并确定哪个字段这些错误应该是:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/ /……使用欧宝娱乐app下载地址\组件\验证器\上下文\ExecutionContextInterface;作者{/ /……私人美元firstName;公共函数验证(ExecutionContextInterface美元上下文,美元有效载荷){/ /你有一个数组的“假名”美元fakeNames= (/ *……* /];/ /检查是否这个名字实际上是一个假名字如果(in_array (美元- >getFirstName (),美元fakeNames)){美元上下文- >buildViolation (“这名字听起来完全假的!”)- >atPath (“firstName”)- >addViolation ();}}}

静态的回调

您还可以使用静态方法的约束。因为静态方法没有访问对象实例,它们接收对象作为第一个参数:

1 2 3 4 5 6 7 8 9 10 11 12 13
公共静态函数验证(美元对象,ExecutionContextInterface美元上下文,美元有效载荷){/ /你有一个数组的“假名”美元fakeNames= (/ *……* /];/ /检查是否这个名字实际上是一个假名字如果(in_array (美元对象- >getFirstName (),美元fakeNames)){美元上下文- >buildViolation (“这名字听起来完全假的!”)- >atPath (“firstName”)- >addViolation ();}}

外部的回调函数和闭包

如果你想执行一个静态的回调方法,不是位于验证对象的类,您可以配置约束来调用可调用的PHP支持的数组call_user_func函数。假设你的验证函数Acme \验证器:validate ():

1 2 3 4 5 6 7 8 9 10 11
名称空间Acme;使用欧宝娱乐app下载地址\组件\验证器\上下文\ExecutionContextInterface;验证器{公共静态函数验证(美元对象,ExecutionContextInterface美元上下文,美元有效载荷){/ /……}}

然后,您可以使用以下配置调用这个验证器:

  • 属性
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
/ / src /实体/ Author.php名称空间应用程序\实体;使用Acme\验证器;使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;#[断言\回调([验证器::类,'确认']))作者{}

请注意

回调约束并支持全球回调函数也可以指定一个全局函数或服务作为一个回调方法。验证使用服务,你应该创建一个定制的验证约束和新约束添加到您的类。

通过PHP配置约束时,您还可以传递闭包的构造函数回调约束:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/ / src /实体/ Author.php名称空间应用程序\实体;使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;使用欧宝娱乐app下载地址\组件\验证器\上下文\ExecutionContextInterface;使用欧宝娱乐app下载地址\组件\验证器\映射\ClassMetadata;作者{公共静态函数loadValidatorMetadata(ClassMetadata美元元数据){美元回调=函数(美元对象,ExecutionContextInterface美元上下文,美元有效载荷){/ /……};美元元数据- >addConstraint (维护\回调(美元回调));}}

警告

使用一个关闭属性配置将禁用属性一起为这类/属性/方法因为缓存关闭不能被缓存。为获得最佳性能,建议使用一个静态的回调方法。

选项

回调

类型:字符串,数组关闭(默认的选项]

回调方法接受三个不同的格式指定回调方法:

  • 一个字符串包含一个具体的名称或静态方法;
  • 数组可调用的格式[' <课程> ',' <法> '];
  • 一个闭包。

具体的回调函数接收一个ExecutionContextInterface实例作为惟一的参数。

静态或关闭回调接收对象作为第一个参数,进行验证ExecutionContextInterface实例作为第二个参数。

类型:数组|字符串

它定义了这个约束的验证组或组。阅读更多关于验证组

有效载荷

类型:混合默认的:

这个选项可以用来连接任意特定领域的数据约束。配置的有效载荷不使用验证器组件,但是它的处理是完全取决于你。

例如,您可能想要使用几个错误级别以不同的方式来呈现没有约束,在前端取决于错误的严重性。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
欧宝娱乐app下载地址Symfony 6.2支持通过苏禄人
欧宝娱乐app下载地址Symfony 6.2支持通过Les-Tilleuls.coop