Проверка формы - условие группы ИЛИ

77
11

У меня есть форма с тремя элементами - именем, логином и электронной почтой. В validation.yml меня есть:

Mark\UserBundle\Entity\User:
properties:
name:
- NotBlank: ~
login:
- NotBlank: ~
email:
- Email: ~
- NotBlank: ~

Он работает, это требует name и login. Вместо этого мне нужно name или login. всегда требуется email.

В Symfony 1.4 я могу использовать sfValidatorOr. Как я могу сделать это в Symfony 2?

спросил(а) 2021-01-28T01:40:17+03:00 3 месяца, 1 неделя назад
1
Решение
87

Я думаю, вы должны решить это, используя вместо этого ограничение 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: ~

ответил(а) 2021-01-28T01:40:17+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема