2015-09-09 3 views
0

У меня есть основная форма, которая включает в себя несколько подформ. Одна из подформ содержит пару полей даты для ввода диапазона дат. Я создал классы сущностей и классы форм и обновил services.yml соответствующим образом.Проверка поля даты в подформе

Форма оказывает штраф. Проблема в том, что поля даты не проверяются при отправке формы. Я могу оставить их пустыми или положить что-нибудь в них, что мне нравится, и я никогда не получаю ошибку проверки. Я проверил проверку поля даты в форме верхнего уровня и работал как ожидалось.

Для тестирования я создал простую форму и подформу. Основная тестовая форма имеет два поля: текстовое поле и поле подформы. В подформе есть два поля, поле даты и поле флажка.

Что касается реального случая, я создал классы объектов и классов и обновил services.yml. Форма отображается нормально. Поле даты не генерирует никаких ошибок при отправке формы с недопустимой датой.

Я попытался указать проверку с аннотациями в классах сущностей, а ограничения атрибутов в $ builder-> добавить метод() вызов, и оба одновременно ;-)

Ток Add() вызова для поля даты выглядит следующим образом:

... 
     ->add('date', 
      'date', 
      [ 
       'attr'   => [ 'placeholder' => 'a date (mm/dd/yyyy)' ], 
       'error_bubbling' => true, 
       'format'   => 'MM/dd/yyyy', 
       'html5'   => false, 
       'input'   => 'datetime', 
       'invalid_message' => 'Invalid date (use mm/dd/yyyy)', 
       'label'   => false, 
       'widget'   => 'single_text', 
       'constraints'  => 
       [ 
        new NotBlank(), 
        new Type('\DateTime') 
       ] 
      ]) 
    ... 

Предложения?

Окружающая среда:
- PHP V5.5.9
- Symfony V2.7. - Twig V1.21.2

ответ

0

В дополнение к добавлению ограничения Valid() поле подформы в основной форме, оно сводится к атрибутам error_bubbling.

Поля в подформе должны быть установлены error_bubbling true для перемещения любых ошибок до поля подформы в основной форме.

Поле подформы в основной форме должно установить error_bubbling false для связывания любых ошибок в подформке с полем подформы.

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

0

При добавлении SubFormType к MainForm выполните следующие действия для проверки вложенных форм:

$builder->add('sub_form', new SubFormType, array(
     'constraints' => array(
      new Valid() 
     )); 

Надеюсь, это поможет :)

+0

Амин, я добавил ограничение в определение поля подформы в основной форме. Нет радости. Должен был вспомнить это сам. Придется делать это для других проектов, чтобы получить какие-либо поля подформы. Поля даты - единственные, с которыми я столкнулся. –

Смежные вопросы