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?