Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Symfony. Form Themes. Zasięg zmiennej.
porzeczki
post 16.12.2017, 11:31:17
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


powiedzmy, że nadpisuję form theme, bo chcę dodać atrybut znacznikowi <select> dla pola typu Choice.

dlaczego zdefiniowana zmienna raz jest widoczna w późniejszych blokach:
  1. //app/Resources/views/_formTheme.html.twig
  2. {% use "bootstrap_3_layout.html.twig" %}
  3.  
  4. {% block choice_widget_collapsed -%}
  5. {% if help is defined %}
  6. {%- set attr = attr|merge({'aria-describedby':'helpBlock'}) -%}
  7. {% endif %}
  8. {{- parent() -}}
  9. {%- endblock choice_widget_collapsed %}


a innym razem musi być przekazana jako argument (linia nr 8):
  1. //app/Resources/views/_formTheme.html.twig
  2. {% use "bootstrap_3_layout.html.twig" %}
  3.  
  4. {% block form_row -%}
  5. {% if help is defined %}
  6. {%- set attr = attr|merge({'aria-describedby':'helpBlock'}) -%}
  7. {% endif %}
  8. {{- form_widget(form,{'attr': attr }) -}}
  9. {%- endblock form_row %}



edit:
Tak jak to rozumiem (poprawcie jeśli źle):
- funkcją parent nie wychodzę poza blok (tylko importuję linie kodu), dlatego zmienna ma tu zasięg a funkcją form_widget() wywołuję zupełnie nowy blok, a wywołując nowy blok muszę przekazać mu zmienną. Czyli zmienne mają zasięg tylko wewnątrz bloku gdzie zostały zdefiniowane.

nowe pytania. czym się różni funkcja:
  1. {{- form_label(form) -}}

od:
  1. {{- block('form_label') -}}



Ten post edytował porzeczki 16.12.2017, 12:35:47
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 06:00