Задать вопрос
nord_ua
@nord_ua

symfony2 динамическая валидация формы с коллекцией, в зависимости от значения полей

К примеру у меня есть документ Post, который может быть как простым постом с коллекцией параграфов, так и постом-ссылкой. Пост может быть создан как ссылка и позже быть отредактированным, заполнившись оригинальным содержимым (параграфами, которые являются коллекцией)
Поля поста: title, is_external, external_url, paragraphs.
Параграф состоит из: title, description. Description обязателен к заполнению.

Как я могу валидировать значения из формы по следующим правилам:
Если is_external checked, external_url не может быть пустым, а paragraphs можно вообще не проверять. Иначе external_url должен быть пустым, коллекция paragraphs должна содержать хотя бы одну запись, все параграфы должны быть валидированы.

Как это сделать правильно?
  • Вопрос задан
  • 4510 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
JekaRu
@JekaRu
Самому в колбэке все провалидировать?
symfony.com/doc/current/reference/constraints/Callback.html
Или кастомную поверку написать?
symfony.com/doc/current/cookbook/validation/custom_constraint.html
Сорри если чего не понял.
Ответ написан
Один из хороших подходов — это создания собственного валидатора, который будет валидировать не свойство а, целлый класс. symfony.com/doc/current/cookbook/validation/custom_constraint.html Здесь плюс большой, что Вы его сможете потом при необходимости определить как сервис, и внедрить в него зависимости.

Также есть возможность обработать эту проверки на евенте FormEvents::SUBMIT (На >= 2.1 < 2.3 FormEvents::BIND), и если есть ошибка, то самому добавить ее addError(new FormError(/**… **/));
Ответ написан
Комментировать
hell0w0rd
@hell0w0rd
Просто разработчик
А зачем вам валидация формы? У вас должна быть валидация конечной модели.
И на мой взгляд было-бы правильнее разделить это на 2 cущности, а на выборке мержить эти сущности
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы