• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Generowanie formularza Ajax/Symfony5

Object Storage Arubacloud
0 głosów
85 wizyt
pytanie zadane 4 maja 2020 w PHP przez Babulec Nowicjusz (120 p.)

Witam,

próbuję stworzyć formularz w którym po zmianie kategorii generują się dodatkowe pola.

<?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
        </h1>
        <h3>Informacje podstawowe</h3>
        <div class="form-group">

            <div class="col_100">
                <div class="input-group">
                    {{ form_label(advertisementForm.title) }}
                    {{ form_widget(advertisementForm.title) }}
                    <p class="error" id="error_email"></p>
                </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">
                    <span id="post_category_name">dsd</span> {{form_widget(advertisementForm.category_select) }}
                </div>
            </div>
        </div>

          i tak dalej .....
       

        <div id="content_load_input">

           // tutaj chciałbym wczytać nowe pola

        </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
{
    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. 

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

–1 głos
1 odpowiedź 148 wizyt
pytanie zadane 14 października 2021 w PHP przez Dick91a Nowicjusz (120 p.)
0 głosów
1 odpowiedź 166 wizyt
pytanie zadane 25 marca 2021 w PHP przez Ambroz Obywatel (1,840 p.)
0 głosów
0 odpowiedzi 209 wizyt

92,762 zapytań

141,686 odpowiedzi

320,499 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...