BonBonSlick
@BonBonSlick
Vanilla Web Architect

Одно поле из нескольких должно быть?

Этот пример весьма древний.

Можно по идее как-то сделать custom constraint или использовать Callback

Какой из подход предпочтительнее?
Почему?
Возможно есть наработки какие?

Уверен что кто-то сталкивался с такой валидацией и должны быть где-то наработки на гите.
Лучше чем лепить по новой, как никак случай относительно частый, можно было бы и добавить офф валидатор.

UPD. Написал простельник метод, кому полезно. Но это крайне неудобно лепить каждый раз т.к. такое условие может быть и для большего количества полей в других запросах, явно надо что-то другое, констрейнт.
$classMetadata->addConstraint(new Callback(['callback' => 'validate']));
    }

    public function validate(ExecutionContextInterface $context): void {
        if (true === empty($this->email()) && true === empty($this->apiToken())) {
            $context->buildViolation('one.of.fields.required')
                    ->atPath('email')
                    ->setInvalidValue($this->email())
                    ->addViolation()
            ;
            $context->buildViolation('one.of.fields.required')
                    ->atPath('apiToken')
                    ->setInvalidValue($this->apiToken())
                    ->addViolation()
            ;
        }
    }


Буду благодарен за констрейнт гист.
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
04 мар. 2021, в 12:03
5000 руб./за проект
04 мар. 2021, в 11:35
3000 руб./за проект
04 мар. 2021, в 11:25
5000 руб./за проект