我有三个元素的表单 - 名称,登录和电子邮件。在validation.yml
我有:
Mark\UserBundle\Entity\User:
properties:
name:
- NotBlank: ~
login:
- NotBlank: ~
email:
- Email: ~
- NotBlank: ~
一切正常,这需要name
和login
。相反,我需要name
或login
。 <{1}}始终是必需的。
在Symfony 1.4中,我可以使用sfValidatorOr。我如何在Symfony 2中制作它?
答案 0 :(得分:0)
我认为您应该使用Callback
约束来解决此问题:
// ...
use Symfony\Component\Validator\ExecutionContextInterface;
class User
{
// ...
public function hasCorrectCreditials(ExecutionContextInterface $context)
{
$isBlank = function ($val) {
return null === $this->name || '' === $this->name;
};
if ($isBlank($this->name)) {
if ($isBlank($this->login)) {
$context->addViolationAdd('login', 'Either name or login should not be blank');
}
}
}
}
Mark\UserBundle\Entity\User:
constraints:
- Callback: { methods: [hasCorrectCreditials] }
properties:
email:
- Email: ~
- NotBlank: ~