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

Generowanie formularza Ajax/Symfony5

VPS Starter Arubacloud
0 głosów
80 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ź 135 wizyt
pytanie zadane 14 października 2021 w PHP przez Dick91a Nowicjusz (120 p.)
0 głosów
1 odpowiedź 151 wizyt
pytanie zadane 25 marca 2021 w PHP przez Ambroz Obywatel (1,840 p.)
0 głosów
0 odpowiedzi 199 wizyt

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...