Wpis z mikrobloga

Formularze w #symfony2

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
  • 7
  • Odpowiedz
  • 0
@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
  • Odpowiedz
@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
Harry19911 - @Jaslanin: to trochę bardziej skomplikowane. tak jak na obrazku. to rozw...

źródło: comment_hSlVrhNEkhJ9s41StPnl28ALJ0h9G57t.jpg

Pobierz
  • Odpowiedz