Mam takie encje jak Question i Answer. Mogą one dotyczyć różnych innych encji. Umożliwiają one po prostu dodanie kolejnych pól do formularza, zdefiniowanych przez użytkownika.
Wymyśliłem że żeby dodać te pola najlepiej będzie zrobić kolekcję z odpowiedziami. Mam encję Order. W OrderType dodaję kolekcję answers, a do $data dodaję nowe obiekty powiązanych Answer
public function buildForm(FormBuilderInterface $builder, array $options) { /* @var $data Order */ $data = $builder->getData(); $builder->add('answers', 'collection', [ 'type' => new AnswerType(), 'by_reference’ => false, 'label' => false, 'cascade_validation' => true, ]); foreach ($this->questionRepo->forOrder() as $question) { $answer = new \Entity\Answer(); $answer->setQuestion($question); $data->addAnswer($answer); } ... } Wszystko super działa. Problem się zaczyna gdy chcę zrobić to samo np. do OrderProduct które jest dzieckiem Product. Tzn. mam formularz Product i w tym formularzu kolekcja z OrderProduct. W nim zawsze $data będzie nullem (o ile mówimy o dodawaniu nie edycji). W listenerach PRESETDATA i POSTSETDATA też $event->getData() jest nullem; Macie jakieś pomysły jak się za to zabrać? #symfony #php
@Jaslanin: tak. Tylko że w tym moim drugim przypadku to to już jest kolekcja i w niej chcę te domyślne elementy kolejnej kolekcji. Czy jakoś tak. Myślałem już by zamiast kolekcji zrobić Model ze wszystkimi pytaniami, generowany dynamicznie
@Jaslanin: to trochę bardziej skomplikowane. tak jak na obrazku. to rozwiązanie o którym piszesz, to pierwszy przypadek który już mi działa. a drugi nie zadziała bo to jest kolekcja, więc nie mogę wywołać addAnswer...
ale chyba zamiast kombinować robiąc kolekcję dla odpowiedzi, muszę zrobić dla zamówienia/produktu w zamówieniu jakiś model w którym dynamicznie dodam atrybuty do obiektu po to by się zbudował formularz, a później z wartości przy zapisie ręcznie
Mam takie encje jak Question i Answer. Mogą one dotyczyć różnych innych encji. Umożliwiają one po prostu dodanie kolejnych pól do formularza, zdefiniowanych przez użytkownika.
Wymyśliłem że żeby dodać te pola najlepiej będzie zrobić kolekcję z odpowiedziami.
Mam encję Order. W OrderType dodaję kolekcję answers, a do $data dodaję nowe obiekty powiązanych Answer
public function buildForm(FormBuilderInterface $builder, array $options){/* @var $data Order */$data = $builder->getData();$builder->add('answers', 'collection', ['type' => new AnswerType(),'by_reference’ => false,'label' => false,'cascade_validation' => true,]);foreach ($this->questionRepo->forOrder() as $question) {$answer = new \Entity\Answer();$answer->setQuestion($question);$data->addAnswer($answer);}...}Wszystko super działa. Problem się zaczyna gdy chcę zrobić to samo np. do OrderProduct które jest dzieckiem Product. Tzn. mam formularz Product i w tym formularzu kolekcja z OrderProduct.
W nim zawsze $data będzie nullem (o ile mówimy o dodawaniu nie edycji). W listenerach PRESETDATA i POSTSETDATA też $event->getData() jest nullem;
Macie jakieś pomysły jak się za to zabrać?
#symfony #php
Komentarz usunięty przez autora
ale chyba zamiast kombinować robiąc kolekcję dla odpowiedzi, muszę zrobić dla zamówienia/produktu w zamówieniu jakiś model w którym dynamicznie dodam atrybuty do obiektu po to by się zbudował formularz, a później z wartości przy zapisie ręcznie
źródło: comment_hSlVrhNEkhJ9s41StPnl28ALJ0h9G57t.jpg
Pobierz