表达式
编辑本页表达式
此约束允许您使用表达式对于更复杂的动态验证。看到基本用法举个例子。看到回调对于给您类似灵活性的不同约束。
适用于 | 类或属性/方法 |
类 | 表达式 |
验证器 | ExpressionValidator |
基本用法
假设你有一门课博客
与类别
而且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 /模型/ BlogPost.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;类博客{私人$类别;私人$isTechnicalPost;/ /……公共函数getCategory(){返回$这->类别;}公共函数setIsTechnicalPost($isTechnicalPost){$这->isTechnicalPost =$isTechnicalPost;}/ /……}
为了验证对象,您有一些特殊的要求:
-
)如果
isTechnicalPost
是真的,那么类别
肯定是其中之一php
-
或
ob娱乐下载
;
B)如果isTechnicalPost
是假的,那么类别
可以是任何东西。
实现这一点的一种方法是使用Expression约束:
- 属性
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13
/ / src /模型/ BlogPost.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;#[断言\表达式("this.getCategory() in ['php', 'ob娱乐下载symfony'] or !this.isTechnicalPost()"消息:“如果这是一篇科技文章,类别应该是php或symfony!”ob娱乐下载,)类博客{/ /……}
的表达式选项是表达式,必须返回true才能通过验证。有关表达式语言语法的详细信息,请参见表达式语法.
有关表达式和可用变量的详细信息,请参见表达式选项详情如下。
选项
表达式
类型:字符串
[默认的选项]
要求值的表达式。如果表达式的计算结果为假值(使用= =
,而不是= = =
),验证将失败。
有关表达式语言语法的详细信息,请参见表达式语法.
在表达式内部,你最多可以访问2个变量:
根据你如何使用约束,你可以在你的表达式中访问1或2个变量:
这
:正在验证的对象(例如BlogPost的实例);价值
:正在验证的属性的值(仅当约束直接应用到属性时可用);
有效载荷
类型:混合
默认的:零
此选项可用于将任意特定于领域的数据附加到约束。已配置的有效负载不由Validator组件使用,但其处理完全取决于您。
例如,您可能想使用若干错误级别根据错误的严重程度,在前端以不同的方式呈现失败的约束。
值
类型:数组
默认的:[]
表达式中使用的自定义变量的值。值可以是任何类型(数值、布尔值、字符串、空值等)。
- 属性
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src /模型/ Analysis.php名称空间应用程序\模型;使用ob娱乐下载\组件\验证器\约束作为断言;类分析{#[断言\表达式('value + error_margin < threshold',值:[“error_margin”= >0.25,“阈值”= >1.5),)私人$度规;/ /……}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。