Hej kolejny odcinek mojego cyklu "poznaję Symfony". Tym razem napotkałem problem z formualrzami. Problem w brzydki sposób rozwiązałem, ale zastanawiam się jak to zrobić "Symfony way".
Otóż mam formularza w w nim zagnieżdżona kolekcję. Dajmy na to
Auto i w nim kolekcję części, z jakich auto się składa.
Jako, że części do aut jest bardzo dużo, to musiałem zrezygnować z standardowego pola formularza "Entity" na rzecz ajaxowego autocomplete. U mnie działa to tak, że po wybrania w autocomplete danej części np. "sprzęgło marki xyz", id tej części ustawiane jest w ukrytym polu id_czesci.
Problem jaki napotykam, to że w takim wypadku po wysłaniu formularza, element kolekcji, który powstaje jest niepełny - tak na prawdę nie zawiera obiektu część, a samo id i zapis do bazy wyrzuca błąd. Obejście tego problemu jakie zastosowałem, to odczytanie id w kontrolerze i przypisanie obiektu do kolekcji. Ale to rozwiązanie jest raczej niezbyt eleganckie.
Pytanie zatem brzmi, czy mogę w jakiś sposób na poziomie formularza "wysłać" obiekt nie wyświetlając selecta typu "entity", tak żeby obiekt był kompletny i nie wymagał dodatkowy operacji bazodanowych w kontrolerze?
Na razie rozwiązanie jakie przychodzi mi do głowy, to wyświetlenie w ukrytym divie pola czesc (select typu entity) i za pomocą event listnerów wczytanie obiektu po wysyłce formularza - ale to w sumie równie brzydkie jak obsługa problemu w kontrolerze.