表达式

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

表达式

此约束允许您使用表达式对于更复杂的动态验证。看到基本用法举个例子。看到回调对于给您类似灵活性的不同约束。

基本用法

假设你有一门课博客类别而且isTechnicalPost属性:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/ / src / AppBundle /模型/ BlogPost.php名称空间AppBundle模型使用ob娱乐下载组件验证器约束作为断言博客私人类别私人isTechnicalPost/ /……公共函数getCategory()返回->类别;}公共函数setIsTechnicalPostisTechnicalPost->isTechnicalPost =isTechnicalPost;}/ /……

为了验证对象,您有一些特殊的要求:

)如果isTechnicalPost是真的,那么类别肯定是其中之一php
ob娱乐下载

B)如果isTechnicalPost是假的,那么类别可以是任何东西。

实现这一点的一种方法是使用Expression约束:

  • YAML
  • 注释
  • XML
  • PHP
1 2 3 4 5 6
# src / AppBundle /资源/ config / validation.ymlAppBundle \模型\博客:约束:-表达式:表达式:"this.getCategory() in ['php', 'ob娱乐下载symfony'] or !this.isTechnicalPost()"信息:“如果这是一个技术帖子,类别应该是php或symfony!”ob娱乐下载

表达式选项是表达式,必须返回true才能通过验证。有关表达式语言语法的详细信息,请参见表达式语法

您还可以将约束附加到特定的属性,并仍然根据整个实体的值进行验证。如果希望将错误附加到特定字段,这非常方便。在这种情况下,价值表示的值isTechnicalPost

  • YAML
  • 注释
  • XML
  • PHP
1 2 3 4 5 6 7
# src / AppBundle /资源/ config / validation.ymlAppBundle \模型\博客:属性:isTechnicalPost:-表达式:表达式:"this.getCategory() in ['php', 'ob娱乐下载symfony'] or value == false"信息:“如果这是一个技术帖子,类别应该是php或symfony!”ob娱乐下载

有关表达式和可用变量的详细信息,请参见表达式选项详情如下。

可用选项

表达式

类型字符串默认的选项

要求值的表达式。如果表达式的计算结果为假值(使用= =,而不是= = =),验证将失败。

有关表达式语言语法的详细信息,请参见表达式语法

在表达式内部,你最多可以访问2个变量:

根据你如何使用约束,你可以在你的表达式中访问1或2个变量:

  • :正在验证的对象(例如BlogPost的实例);
  • 价值:正在验证的属性的值(仅当约束直接应用到属性时可用);

消息

类型字符串默认的此值无效。

表达式求值为false时提供的默认消息。

有效载荷

类型混合默认的

此选项可用于将任意特定于领域的数据附加到约束。已配置的有效负载不由Validator组件使用,但其处理完全取决于您。

例如,您可能想使用若干错误级别根据错误的严重程度,在前端以不同的方式呈现失败的约束。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。