dlaczego zdefiniowana zmienna raz jest widoczna w późniejszych blokach:
//app/Resources/views/_formTheme.html.twig {% use "bootstrap_3_layout.html.twig" %} {% block choice_widget_collapsed -%} {%- set attr = attr|merge({'aria-describedby':'helpBlock'}) -%} {% endif %} {{- parent() -}} {%- endblock choice_widget_collapsed %}
a innym razem musi być przekazana jako argument (linia nr 8):
//app/Resources/views/_formTheme.html.twig {% use "bootstrap_3_layout.html.twig" %} {% block form_row -%} {%- set attr = attr|merge({'aria-describedby':'helpBlock'}) -%} {% endif %} {{- form_widget(form,{'attr': attr }) -}} {%- 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:
{{- form_label(form) -}}
od:
{{- block('form_label') -}}