表达式

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

表达式

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

基本用法

想象你有一个类博客类别isTechnicalPost属性:

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

验证对象,你有一些特殊的要求:

)如果isTechnicalPost是真的,那么类别必须是php
ob娱乐下载;

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

做到这一点的方法之一是表达式约束:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src /模型/ BlogPost.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;/ * * *@Assert\表达式(*”this.getCategory () (php, symfony的)或! thob娱乐下载is.isTechnicalPost ()*消息=“如果这是一个技术文章,类别应该php或symfony !”ob娱乐下载* ) */< /span>博客{/ /……}

表达式选项的表达式必须返回true为了验证通过。了解更多关于表达式语言语法,看表达式语法

你也可以约束附加到一个特定的属性和仍然验证基于整个实体的值。这是非常方便的,如果你想把错误到一个特定的领域。在这种背景下,价值代表的价值isTechnicalPost

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ / src /模型/ BlogPost.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;博客{/ /……/ * * *@Assert\表达式(*”this.getCategory () (php, symfony的)或价值= ob娱乐下载= false”, *消息=“如果这是一个技术文章,类别应该php或symfony !”* ) */< /span>私人美元isTechnicalPost;/ /……}

更多的信息表达和哪些变量是可用的,看到的表达式选择下面的细节。

选项

表达式

类型:字符串(默认的选项]

的表达式将被评估。如果表达式的求值结果为false值(使用= =,而不是= = =),验证将会失败。

了解更多关于表达式语言语法,看表达式语法

内的表达,你可以访问两个变量:

这取决于你如何使用约束,你获得1或2变量表达式:

  • :正在验证的对象(例如博客的一个实例);
  • 价值:财产的价值被认可(只有当约束直接用于属性);

类型:数组|字符串

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

消息

类型:字符串默认的:这个值是无效的。

提供的默认消息当表达式的求值结果为false。

在这个信息:您可以使用以下参数

参数 描述
{{value}} 当前(无效)值

有效载荷

类型:混合默认的:

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

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

类型:数组默认的:[]

自定义变量的值在表达式中使用。值可以是任何类型(数字、布尔值、字符串、空等)。

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src /模型/ Analysis.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;分析{/ * * *@Assert\表达式(*“价值+ error_margin <阈值”,*值= {“error_margin”: 0.25,“阈值”:1.5}*)* /私人美元度规;/ /……}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。