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

Generowanie formularza Ajax/Symfony5

0 głosów
38 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ź 41 wizyt
pytanie zadane 14 października w PHP przez Dick91a Nowicjusz (120 p.)
0 głosów
1 odpowiedź 61 wizyt
pytanie zadane 25 marca w PHP przez Ambroz Obywatel (1,750 p.)

85,876 zapytań

134,650 odpowiedzi

298,919 komentarzy

56,744 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 1048p. - rucin93
  2. 1042p. - Whistleroosh
  3. 989p. - adrian17
  4. 984p. - Mikbac
  5. 982p. - Mateusz Bogdan
  6. 977p. - Michal Drewniak
  7. 967p. - nidomika
  8. 859p. - CC PL
  9. 854p. - Argeento
  10. 757p. - ScriptyChris
  11. 692p. - s. Dorota Kowalewska
  12. 683p. - tokox
  13. 660p. - Vinox
  14. 645p. - TheLukaszNs
  15. 628p. - WhiskeyTaster
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...