Tworząc formularz z poziomu nowej klasy (w taki sposób: https://symfony.com/doc/current/forms.html#creating-form-classes), muszę wskazać, którą encję wiąże z daną klasą/formularzem:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Task::class,
));
}
Na wyjściu powstanie mi formularz wraz ze wskazanymi polami, które to zostały opakowane divem.
Jeżeli potrzebuję powiązać formularz z dwiema encjami i chcę zawrzeć tylko niektóre pola z drugiej encji wówczas mogę to zrobić w taki sposób:
- Tworzę klasę, która zawiera wymagane pola z drugiej encji.
- W klasie reprezentującej główny formularz dodaję powyższą klasę jako zwykłe pole:
$builder
->add('user', UserType::class) // UserType jest formularzem reprezentującym 2gą encję
Ten sposób działa - otrzymuję jeden formularz z wybranymi polami od dwóch encji.
Problem jest jednak w kodzie Html jaki jest tworzony przez Symfony.
Pola dotyczące jednej encji są opakowywane w jeden div a te dotyczące drugiej encji w inny div.
Tutaj to dokładniej opisałem: Przesunięcie elementu z utrzymaniem responsywności
Chciałbym aby wszystkie pola były opakowane w jeden kontener/div.
czysteskarpety