![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 1 Dołączył: 28.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
[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? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:31 |