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

Symfony - dynamiczne wartości dla typu ChoiceType w formularzu z jQuery.

Cloud VPS
0 głosów
466 wizyt
pytanie zadane 21 kwietnia 2020 w PHP przez XiverKi Bywalec (2,050 p.)
edycja 21 kwietnia 2020 przez XiverKi

Hej, mam pewien problem, który nie do konca wiem jak rozwiązać. Przetwerowałem troche internet ale póki co brak dobrego rozwiązania, może ktoś tutaj rzuci jakim pomysłem.

Kod formy:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('text', TextType::class, [
            ])
            ->add('choice', ChoiceType::class, [
                'choice_loader' => null,
                'expanded' => true,
                'multiple' => true,
                'mapped' => false
            ])
            ->add('select', ChoiceType::class, [
                'choices' => []
            ])
            ->add('property', HiddenType::class, [
                'attr' => [
                    'class' => 'hidden-property'
                ]
            ])
        ;
    }

Jaki jest problem? Chciałbym żeby w zależności od tego co się dzieje  na stronie do pola "choice" wpadały dynamiczne wartości. Zajmuje się tym jQuery. Dla testu wykonałem nawet takie sztywne przypisanie:

            $("#chocice_0").append(
                '<div class="custom-control custom-checkbox">\n' +
                '    <input type="checkbox" class="custom-control-input" id="my_id" name="fieldchoice[attributes][0][choice][]" value="my_value">\n' +
                '    <label class="custom-control-label" for="my_id">LABEL</label>\n' +
                '</div>'
            );

Na stronie wyświetla się pole choice z jedną wartością, własnie tą przyporzadkowaną przez jQuery. Jednakże po wysłaniu formularzu,  to pole w ogóle nie jest wysyłane. Robiłem nawet tak, że dodawałem w php jakieś wartości do atrybutu 'choices' i podmieniałem w jQuery ale to na nic. Mimo wszystko na serwer, w ogóle nie jest przesyłane to pole.

Myślałem nad skorzystam z tego: https://symfony.com/doc/current/form/dynamic_form_modification.html#cookbook-form-events-submitted-data
Jednakże, z tego co rozumiem musiałbym w php uwzględnić wiele pól. Powiedzmy, że mój wpis na blogu, do którego ma służyć ten formularz może mieć wiele parametrów, o różnych typach (select, text, choicebox).
Dla przykładu załóżmy, że atrybutów jest 8, jednakże nie każdy wpis może je mieć. Kwestia tego jaką kategorie wybierze użytkownik dla tego wpisu.
Zakładając, że są 4 kategorie. Musiałbym uwzględnić dla każdej z nich inny zestaw parametrów co za tym idzie, każdy parametr musiałby mieć okodowowany swoj "FormType", z uwzględnionymi wartościami "choices". To troche zabija dynamiczność, która możnaby osiągnąć prostym jquery.


Jakieś pomysły?

2 odpowiedzi

0 głosów
odpowiedź 22 kwietnia 2020 przez Ehlert Ekspert (215,050 p.)

Moim zdaniem mylisz tutaj kilka spraw.

  1. Typowym wykorzystaniem choiceType'a jest dropdown. Podstawą jego użycia jest wgl podanie opcji entryType, aby było wiadomo co renderować. Możesz tam przekazać dowolny inny tym dziedziczący po AbstractType.
  2. Dynamiczne formularze. Tutaj sprawa wygląda tak, że w zależności od tego jakie dane przesyłasz, inaczej może wyglądać formularz. Np. duży formularz z danymi o kliencie. Przychodzi Ci taki POST do aplikacji. Subskrybujesz się na odpowiedni event i sprawdzasz czy klient zaznaczył "adres wysyłki inny" i dodajesz odpowiednie pola.
komentarz 22 kwietnia 2020 przez XiverKi Bywalec (2,050 p.)
Czy w takim razie odpowiednim rozwiązaniem będzie stworzenie osobnego typu dla każdego z 8 parametrów i w zależności od tego co wybrał użytkownik doklejanie do formularza każdego z nich?
0 głosów
odpowiedź 22 kwietnia 2020 przez Dawid98 Użytkownik (830 p.)

Ja do dynamicznych formularzy w Symfony używam addEventListener(). Doc do tego

komentarz 22 kwietnia 2020 przez XiverKi Bywalec (2,050 p.)
tak tak ale to wciąż nie zmienia jednej rzeczy. Mianowicie parametry, które chce dodawać do wpiu mogą mieć rózne typy np: choice, text
dodatkowo parametr typu choice moze mieć różne wartości w zależności od tego co to za parametr

czy w takiej sytuacji każdy parametr powinien mieć zdefiniowane swoje własne pole?

Podobne pytania

0 głosów
0 odpowiedzi 134 wizyt
0 głosów
0 odpowiedzi 247 wizyt
0 głosów
1 odpowiedź 518 wizyt
pytanie zadane 4 grudnia 2022 w PHP przez zbiku25 Gaduła (3,000 p.)

93,482 zapytań

142,414 odpowiedzi

322,761 komentarzy

62,894 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

Kursy INF.02 i INF.03
...