Got*_*bel 4 validation symfony
使用NotEqualTo验证器约束时,我想定义多个值.
这是它用于一个值的方式:
# src/SocialBundle/Resources/config/validation.yml
Acme\SocialBundle\Entity\Person:
properties:
age:
- NotEqualTo:
value: 15
Run Code Online (Sandbox Code Playgroud)
但是如何定义一组(数组)值?我试过了
- NotEqualTo:
value: 15
value: 16
value: 17
Run Code Online (Sandbox Code Playgroud)
和
- NotEqualTo:
value: [15, 16, 17]
Run Code Online (Sandbox Code Playgroud)
但这两种方法都不起作用.
我相信你可以拥有多个约束.
Acme\SocialBundle\Entity\Person:
properties:
age:
- NotEqualTo: { value: 15 }
- NotEqualTo: { value: 16 }
- NotEqualTo: { value: 17 }
Run Code Online (Sandbox Code Playgroud)
或者提供回调验证器
Acme\SocialBundle\Entity\Person:
properties:
age:
- Callback: [validateNotOfAge]
Run Code Online (Sandbox Code Playgroud)
.
<?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
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您有Symfony 2.4,则可以使用Expression
使用ExpressionLanguage组件的新验证器.
Acme\SocialBundle\Entity\Person:
properties:
age:
- Expression:
expression: "this.getAge() not in [15, 16, 17]"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
152 次 |
最近记录: |