Symfony4 - Formularz składający się z wielu encji

Symfony4 - Formularz składający się z wielu encji
WC
  • Rejestracja:ponad 8 lat
  • Ostatnio:2 dni
  • Postów:137
0

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:

Kopiuj
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:

  1. Tworzę klasę, która zawiera wymagane pola z drugiej encji.
  2. W klasie reprezentującej główny formularz dodaję powyższą klasę jako zwykłe pole:
Kopiuj
$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
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
0

Jak to jest generowane przez kontroler i jeszcze z jakimś klasami css to faktycznie lipa, ciężko to ostylować/edytować, dlatego wolę rozwiązanie z laravel/codeigniter gdzie w kontrolerach na kilka linii masz tylko walidację/alerty, a przez widoki przekazujesz wartości i to jest rozwiązanie pozwalające zrobić co tam chcesz. Może jakoś można zrezygnować z tego i zbudować form bez tego, poszperaj w dokumentacji.


Zobacz pozostały 1 komentarz
czysteskarpety
czysteskarpety
@marcio: no tak przypuszczałem, że jakoś można, mogli od razu w dokumentacji opisać
axelbest
Dokładnie o to mi chodziło.
WC
Myślałem, że ta metoda tworzenia formularzy zredukuje mi liczbę kodu w Html ale jak się okazuje w tym przypadku jest zupełnie inaczej ;)
marcio
No jesli sie chce mies swobode to przeciez nie mozna oczekiwac ze symfony zrobi to za ciebie ;) albo robisz theme wtedy wszystkie formularze masz takie same albo w przypadku kiedy masz jakies niestandartowe widget-y trzeba to zrobic recznie
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Warszawa
  • Postów:2252
0

Sprawdzałeś to? https://symfony.com/doc/current/form/form_customization.html - ogólnie szukaj informacji na temat dekoratorów.

WC
Tak się tego zrobić nie da. Pola są wsadzane do różnych bloków i nie jestem w stanie złożyć je do jednego konteneru.
axelbest
No ale możesz nadpisac domyślnie wrappery hmtlowe, tak by htmla nie było i wtedy hula dusza
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Warszawa
  • Postów:2252
0

A patrzyłes chociaż jak wygląda Twój obecny kod i jak działa ten helper twigowy? Przesledz cykl renderowania htmla i pewnie zauważysz, że możesz napisać własny helper.

edytowany 1x, ostatnio: axelbest

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.