【发布时间】:2016-01-04 13:59:06
【问题描述】:
我目前正在与 ExpressionLanguage 验证就表单验证所需的约束进行斗争:
我的表格:
- 文本项
- Entity1 项目选择器(下拉)
- Entity2 项目选择器(下拉)
- 文本区域项
我的愿望:
- 条件 Text Item 为空且 Entity1 选择器为空时的一个错误触发器
- 另一个错误触发条件:
Entity1.id == XX和Entity2.id == YY并且 Textarea 为空
到目前为止,我在 validation.yml 中得到了这个:
Experveo\ShopBundle\Entity\Vehicle:
constraints:
- Expression:
expression: "this.getTextItem() != '' | this.getEntity1() != ''"
message: error1.
看来我需要设置相反的条件才能使其发挥作用。到目前为止,我在documentation 和in expression language syntax help 上都没有找到任何高级线索。
我怎样才能达到这些条件?以下根本不起作用...
- Expression:
expression: >
this.getTextItem() == ''
&& this.getEntity1() != ''
&& this.getEntity1().getId() === 49
&& this.getEntity2() != ''
&& this.getEntity2() === 914
&& this.getTextAreaItem() == ''"
message: error2.
【问题讨论】:
-
当您遇到这种复杂情况时,我可能会查看creating a custom validation constraint,尤其是看到这样的硬编码值。您似乎还想为您的两个实体检查
== '',而不是相反。 -
感谢您的回复。我会说你的答案是“大”工具,允许更复杂的验证模式和逻辑。我在下面建议的回调适合我的需要。但是谢谢你给我指出这条线索。
-
没问题 - Symfony 的优点是可以灵活地做任何一个,而不总是需要最复杂的解决方案来解决一个简单的问题
标签: validation symfony expression constraints yaml