• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony Form - gdzie umieszczać opcje konkretnych typów formularzy?

Object Storage Arubacloud
+1 głos
238 wizyt
pytanie zadane 10 grudnia 2019 w PHP przez michh123 Bywalec (2,790 p.)

Cześć.

Mam szybkie pytanie dotyczące typów formularzy i ich atrybutów w Symfony. Kiedy tworzymy formularz (w Symfony) dodajemy pewne atrybuty dla konkretnych typów formularzy (np. label dla pola tekstowego, "choices" dla listy rozwijanej, itd..). Te atrybuty możemy dodać poprzez formBuilder i metodę add() dla np. typu tekstowego (TextType) i może to wyglądać w ten sposób:
 

//...
$builder
        ->add('pole1', TextType::class, [
                'attr' => ['class' => 'jakas-klasa']
        ])
//...

ALE możemy również dodać praktycznie te same atrybuty poprzez Twig, np.:
 

{{ form_widget(form.pole1, {'attr': {'class': 'jakas-klasa'}}) }}

I tak jest dla wielu atrybutów wielu typów formularzy (porównując dokumentację).

Stąd moje pytanie: gdzie umieszczać te atrybuty? Wewnątrz buildera czy Twig? Czy jest jakieś kryterium wyboru pomiędzy jednym a drugim (że w takich przypadkach tu, a w innych tam)?

Z góry dziękuję za odpowiedź!

1 odpowiedź

+1 głos
odpowiedź 13 grudnia 2019 przez suice Gaduła (3,960 p.)
nie trzymaj frontendowych atrybutow w type'ach symfony

do tego sluzy form_theme

https://symfony.com/doc/current/form/form_themes.html
komentarz 14 grudnia 2019 przez michh123 Bywalec (2,790 p.)

Właśnie nie chciałem zbytnio używać motywów, bo mam zrobiony layout formularza. Wystylizowałem (również z pomocą Bootstrapa) konkretne inputy i potrzebne elementy w ten sposób:
 

{{ form_start(form, {'attr': {'class': 'heading-form'}}) }}
    <div class="form-group float-left mt-3 mr-5 heading-form_show">
        <fieldset>
            <legend>Show</legend>

            <div class="form-check form-check-inline mr-4">
                {{ form_widget(form.exampleSentence, {'attr': {'class': 'form-check-input'}}) }}
                {{ form_label(form.exampleSentence, null, {
                    'label_attr': {'class': 'form-check-label'}
                }) }}
            </div>

            <div class="form-check form-check-inline">
                {{ form_widget(form.pronunciation, {'attr': {'class': 'form-check-input'}}) }}
                {{ form_label(form.pronunciation, null, {
                    'label_attr': {'class': 'form-check-label'}
                }) }}
            </div>
        </fieldset>
    </div>

    <button class="btn" type="submit">Submit</button>
{{ form_end(form) }}

Czy takie podejście (z attr i class wewnątrz funkcji Twigowych) jest poprawne?

Podobne pytania

0 głosów
1 odpowiedź 234 wizyt
pytanie zadane 11 lutego 2022 w PHP przez Moonmaker05 Początkujący (410 p.)
–1 głos
2 odpowiedzi 381 wizyt
pytanie zadane 1 lipca 2019 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 204 wizyt
pytanie zadane 21 maja 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)

92,579 zapytań

141,427 odpowiedzi

319,653 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...