表达式

编辑该页面

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

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

表达式

2.4

表达式约束是在Symfony 2.4中引入的。ob娱乐下载

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

适用于 属性/方法
选项
表达式
验证器 ExpressionValidator

基本用法

想象你有一个类博客类别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
名称空间Acme\DemoBundle\模型;使用ob娱乐下载\组件\验证器\约束作为断言;博客{私人美元类别;私人美元isTechnicalPost;/ /……公共函数getCategory(){返回美元- >类别;}公共函数setIsTechnicalPost(美元isTechnicalPost){美元- >isTechnicalPost =美元isTechnicalPost;}/ /……}

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

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

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

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

  • YAML
  • 注释
  • XML
  • PHP
1 2 3 4 5 6
# src / Acme / DemoBundle /资源/ config / validation.ymlAcme \ DemoBundle \模型\博客:约束:- - - - - -表达式:表达式:“this.getCategory () (php, symfoob娱乐下载ny的)或! this.isTechnicalPost ()信息:“如果这是一个技术文章,类别应该php或symfony !”ob娱乐下载

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

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

  • YAML
  • 注释
  • XML
  • PHP
1 2 3 4 5 6 7
# src / Acme / DemoBundle /资源/ config / validation.ymlAcme \ DemoBundle \模型\博客:属性:isTechnicalPost:- - - - - -表达式:表达式:“this.getCategory () (php, symfoob娱乐下载ny的)或价值= = false”信息:“如果这是一个技术文章,类别应该php或symfony !”ob娱乐下载

谨慎

在Syob娱乐下载mfony 2.4和2.5 Symfony,如果属性(如。isTechnicalPost),表情永远不会被称为价值将被视为有效。以确保没有价值,可以使用NotNull约束

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

可用选项

表达式

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

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

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

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

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

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

消息

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

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

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。