1

Тема: Пропуск валидации пустой вложенной формы

Здравствуйте.  Столкнулся со следующей проблемой. Есть в админке форма для создания товаров, которые могут поставляться в разных комплектациях. Для этого встраиваю в форму товара форму новой комплектации. Проблема в том, что при сохранении, если встроенная форма не заполнена, то она вызывает ошибки валидации. Пробовал делать unset() в doBind(), но тогда возникает ошибка: LogicException('Cannot remove form fields (read-only).') . Подскажите как можно решить/обойтит это проблему?

2

Re: Пропуск валидации пустой вложенной формы

проставить полям required - false?

какие ошибки валидации-то? Они как бы разные бывают

3

Re: Пропуск валидации пустой вложенной формы

В том то и дело, что валидация все-таки должна проходить, если в форме заполнено хотя-бы одно поле. Ведь форма добавления новой комплектации будет все время, но не всегда она нужна. Но если в форме ничего не изменилось, то ее надо пропустить. Да, валидация идет на required-поля и maxlength

4

Re: Пропуск валидации пустой вложенной формы

опция required - false не отменяет валидацию, а объявляет поле необязательным.

5

Re: Пропуск валидации пустой вложенной формы

Мне кажется, вы не совсем поняли вопрос. В моем понимании валидация - это проверка значений на соответствие условий, в том числе и required.

Если хотя-бы одно поле в форме заполнено - она должна пройти валидацию (проверить заполнение обязательных полей), и показать ошибки, при наличии последних. Если форма не заполнялась, то валидация и сохранение должны быть пропущены, чтобы сохранение основного объекта не прерывалось, а в таблице комплектаций не было пустых записей.

6 Отредактировано Hill (2012-05-17 10:48:51)

Re: Пропуск валидации пустой вложенной формы

Ааа..... ну фик его знает, я бы наверное сделал таки поля необязательными и написал бы какой-нибудь postvalidator который бы проверял наличие всех необходимых значений в embedded форме, в случае если в ней заполнено хоть какое-нибудь значение.

Но на самое элегантное решение как бы не претендую, может тут старшие товарищи подскажут.


PS: http://www.symfony-project.org/more-wit … nced-Forms раздел "Игнорирование внедрённых форм"

7

Re: Пропуск валидации пустой вложенной формы

Acrux пишет:

Мне кажется, вы не совсем поняли вопрос.

Ну, в точности с тем, как вы его изложили.
Решайте проблему через поствалидаторы. Других вариантов нет. Если у поля стоит признак "обязательное" - значит оно обязательное, без вариантов. Если не стоит - значит необязательное, также без вариантов. Все остальные сложные условия "а если" - реализуйте в поствалидаторах, либо напишите собственный валидатор, учитывающий вашу бизнес-логику.