próbuję stworzyć formularz w którym po zmianie kategorii generują się dodatkowe pola.
formularz
<?php namespace App\Form; use App\Entity\Advertisement\Advertisement; ... class PostFormType extends AbstractType { { $builder ->add('category_select', ButtonType::class, [ 'label'=>'Wybierz kategorię' ]) ->add('title', TextType::class, [ 'label'=>'Wpisz tytuł' ]) ->add('category', HiddenType::class) ->add('description', TextareaType::class, [ 'label'=>'Opis' ]) ->add('location', TextType::class, [ 'label'=>'Lokalizacja' ]) ->add('name', TextType::class, [ 'label'=>'Imię' ]) ->add('email', EmailType::class, [ 'label'=>'Adres e-mail' ]) ->add('phone', TextType::class, [ 'label'=>'Telefon' ]) ->add('save', SubmitType::class, [ 'attr' => ['class' => 'btn btn-save w-100', 'id' => 'save'] ]); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Advertisement::class, ]); } }
widok
{{ form_start(advertisementForm, {'attr': {'novalidate': 'novalidate'}}) }} <div class="container max-width "> <h1 class="text-center"> Nowe ogłoszenie </h1> <div class="form-group"> <div class="col_100"> <div class="input-group"> {{ form_label(advertisementForm.title) }} {{ form_widget(advertisementForm.title) }} </div> {{ form_errors(advertisementForm.title) }} </div> </div> <div class="form-group"> <div class="col_100"> {{ form_label(advertisementForm.category_select) }} </div> <div class="col_100"> <div class="input-group"> </div> </div> </div> <div id="content_load_input"> </div> <div class="col-12"> {{ form_widget(advertisementForm.save) }} </div> </div> {{ form_end(advertisementForm) }}
Na razie robię to tak, że po zmianie kategorii dodaję nowe pola w js
np.
inputs.generateSelect('level', 'Poziom', dataLevel);
inputs.generateSelect('furnishings','Umeblowanie', dataBoolean);
i to oczywiście działa, ale wydaje mi się to strasznie nie po Bożemu...
A więc próbowałem stworzyć drugi formularz i jakoś go zaimportować do pierwszego.
formularz
namespace App\Form; use App\Entity\Advertisement\Flat; .... class FlatFormType extends AbstractType { { $builder ->add('price') ->add('area'); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Flat::class, ]); } }
i ok mogę dodać go tak
->add('flat', FlatFormType::class, [
'mapped' => false
])
ale jak go mogę dodać za pomocą JS po zmianie kategorii?
Przeszukałem już chyba cały internet i albo źle zadaję pytania, albo nie wiem...
Pozdrawiam i z góry dziękuję za pomoc.