使用NotEqualTo validator constraint时,我想定义多个值。
这是用于一个值的方式:
# src/SocialBundle/Resources/config/validation.yml
Acme\SocialBundle\Entity\Person:
properties:
age:
- NotEqualTo:
value: 15
但是如何定义一组(数组)值?我试过了
- NotEqualTo:
value: 15
value: 16
value: 17
和
- NotEqualTo:
value: [15, 16, 17]
但两种方法都不起作用。
答案 0 :(得分:5)
我相信你可以有多个约束。
Acme\SocialBundle\Entity\Person:
properties:
age:
- NotEqualTo: { value: 15 }
- NotEqualTo: { value: 16 }
- NotEqualTo: { value: 17 }
或提供回调验证器
Acme\SocialBundle\Entity\Person:
properties:
age:
- Callback: [validateNotOfAge]
<?php
namespace Acme\SocialBundle\Entity;
use Symfony\Component\Validator\ExecutionContextInterface;
class Person
{
public function validateNotOfAge(ExecutionContextInterface $context)
{
if (in_array($this->age, array(
15, 16, 17
))) {
$context->addViolationAt(
'age',
'This age is not permitted',
array(),
null
);
}
}
}
或者如果你有Symfony 2.4,你可以使用使用ExpressionLanguage组件的新Expression
验证器。
Acme\SocialBundle\Entity\Person:
properties:
age:
- Expression:
expression: "this.getAge() not in [15, 16, 17]"