Witam,
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
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$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
<h3>Informacje podstawowe
</h3>
<div class="input-group"> {{ form_label(advertisementForm.title) }}
{{ form_widget(advertisementForm.title) }}
<p class="error" id="error_email"></p> {{ form_errors(advertisementForm.title) }}
{{ form_label(advertisementForm.category_select) }}
<div class="input-group"> <span id="post_category_name">dsd
</span> {{form_widget(advertisementForm.category_select) }}
<div id="content_load_input">
{{ form_widget(advertisementForm.save) }}
{{ 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
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$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.