[php][/php]Cześć,

utworzyłem formularz korzystając zHow to Dynamically ...

Formularz :
Kod
<?php
/

class EventType extends AbstractType
{
    private $permissions;
    public function __construct($permissions = false)
    {
        $this->permissions = $permissions;
    }
  
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add(
                'plannedStartDate',
                'date',
                array(
                    'html5' => false,
                    'placeholder' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day'),
                    'widget' => 'single_text',
                    'format' => 'dd/MM/yyyy',
                    'required' => true,
                    'label' => '',
                    'label_attr' => array(
                        'class' => 'col-sm-3 control-label'
                    ),
                    'attr' => array(
                        'class' => 'form-control'
                    )
                )
            )
            ->add(
                'plannedStartTime',
                'time',
                array(
                    'html5' => false,
                    'widget' => 'single_text',
                    'read_only' => true,
                    'required' => true,
                    'label' => '',
                    'label_attr' => array(
                        'class' => 'col-sm-3 control-label'
                    ),
                    'attr' => array(
                        'class' => 'form-control'
                    )
                )
            )
            ->add(

                'plannedEndTime',
                'time',
                array(
                    'html5' => false,
                    'widget' => 'single_text',
                    'read_only' => true,
                    'placeholder' => 'Godzina zakończenia',
                    'required' => true,
                    'label' => '',
                    'label_attr' => array(
                        'class' => 'col-sm-3 control-label'
                    ),
                    'attr' => array(
                        'class' => 'form-control'
                    )
                )
            )
            ->add(
                'typeOfEvent',
                'entity',
                array(

                    'class' =>'AppBundle:TypeOfEvent',
                    'placeholder' => 'Wybierz typ wizyty',
                    'required' => true,
                    'label' => 'Typ wizyty',
                    'label_attr' => array(
                        'class' => 'col-sm-3 control-label'
                    ),
                    'attr' => array(
                        'class' => 'form-control'
                    )
                )
            )
            ->add('contractor', 'entity', array(

                'placeholder' => 'Wybierz',
                'class' => 'AppBundle:Contractor',
                'label' => 'Kontrahent',
                'label_attr' => array(
                    'class' => 'col-sm-3 control-label'
                ),
                'attr' => array(
                    'class' => 'form-control'
                )
            ))
            ->add('contactPersonTelephone', 'text', array(

                
            ))
          
            ->add('submit', 'submit', array(
                'label' => 'Zapisz',
                'attr' => array(
                    'class' => 'btn btn-default button_green'
                )
            ))
//            
       ;


        $formCyclicModifier = function (FormInterface $form, TypeOfEvent $typeOfEvent = null) {

                    if ($typeOfEvent) {
                        if ($typeOfEvent->getIsCyclic() == true){


                            $form->add(
                                'cyclic',
                                'entity',
                                array(
                                    'class' => 'AppBundle:Cyclic',
                                  
                                )
                            );
                        }
                    } else {}

        };

        $formModifier = function (FormInterface $form, Contractor $contractor = null) {


            $contactPersons = null === $contractor ? array() : $contractor->getContactPersons();

            $rooms = null === $contractor ? array() : $contractor->getRoom();

            $form->add(
                'contactPerson',
                'entity',
                array(

                    'class' => 'AppBundle:ContactPerson',
                    'placeholder' => 'Wybierz użytkownika',
                    'choices' => $contactPersons,
                
                )
            );

            $form->add(
                'room',
                'entity',
                array(

                    'class' => 'AppBundle:Room',
                    'placeholder' => 'Wybierz pomieszczenie',
                    'choices' => $rooms,
                
                )
            );


        };

        $builder->addEventListener(
            FormEvents::PRE_SET_DATA,
            function (FormEvent $event) use ($formModifier) {
                $data = $event->getData();

                $formModifier($event->getForm(), $data->getContractor());
            }
        );
        $builder->addEventListener(
            FormEvents::PRE_SET_DATA,
            function (FormEvent $event) use ($formCyclicModifier) {
                $data = $event->getData();

                $formCyclicModifier($event->getForm(), $data->getTypeOfEvent());

            }
        );

        $builder->get('contractor')->addEventListener(
            FormEvents::POST_SUBMIT,
            function(FormEvent $event) use ($formModifier){
                $contractor = $event->getForm()->getData();
                $formModifier($event->getForm()->getParent(), $contractor);

            }
        );
        $builder->get('typeOfEvent')->addEventListener(
            FormEvents::POST_SUBMIT,
            function(FormEvent $event) use ($formCyclicModifier){
                $typeOfEvent = $event->getForm()->getData();
                $formCyclicModifier($event->getForm()->getParent(), $typeOfEvent);

            }
        );
    }



Korzystając z ajaxa podmieniam dane dla list wyboru w zależności od wybranego kontrahenta. I pięknie to działa.

Problem w tym, ze jak chcę przeprowadzić walidację np czasu w polach 'plannedStartTime', 'plannedEndTime', to pobieranie danych do list przestaje działać. Gdy nic nie waliduję działa poprawnie.

Jak dopisać walidację do tego formularza by nie zakłócała ajaxowego podmieniania części tego formularza?