2013-05-19 7 views
14

Was ist der Unterschied zwischen diesen ist:Minus In Zweig Blockdefinition

{%block body %} 

und dass

{%block body -%} 
+0

möglich Duplikat von [Was bedeutet der Bindestrich für einen Block in Zweig wie in {% Blockkörper -%}?] (Http://stackoverflow.com/questions/17298902/what-does-the-hyphen-mean -for-a-Block-in-Zweig-wie-in-Block-Körper) –

+3

Ja, aber ich fragte 19. Mai 13 um 11:56 und \t Michaël Perrin fragte 25. Juni 13 um 13:38. Und auf dieser Seite haben wir eine gute Antwort von SirDerpington – nonlux

Antwort

26

Nur etwas darüber in der Dokumentation lesen, nicht sicher, ob dies auch auf {% block ... %} Tags gelten. Twig whitespace control

{% set value = 'no spaces' %} 
    {#- No leading/trailing whitespace -#} 
    {%- if true -%} 
     {{- value -}} 
    {%- endif -%} 
{# output 'no spaces' #} 

Es gibt auch ein weiteres Beispiel gegeben, die die Leerzeichen vor dem variablen trimmt aber doesnt't tun es am Ende - so ist der Effekt nur auf einer Seite.

{% set value = 'no spaces' %} 
    <li> {{- value }} </li> 
{# outputs '<li>no spaces </li>' #} 

Das obige Beispiel zeigt die Steuer Modifikator Standard Leerzeichen, und wie Sie es Leerzeichen zu entfernen, um Tags verwenden. Trimmraum verbraucht alle Leerzeichen für diese Seite des Tags. Es ist möglich, Leerzeichen zu verwenden, auf der einen Seite eines Tags Trimmen

Also ich denke, der Unterschied in der gegebenen exmaples ist, dass im ersten Block body wird es ein Leerzeichen, nachdem der Block gestartet. In Ihrem zweiten Beispiel body - gibt es keine, nachdem der Block gestartet wurde. Lesen Sie einfach den Dokumentationseintrag, um zu sehen, wie es funktioniert.

EDIT

Ein einfaches Beispiel das Beispiel in der Doku zu demonstrieren:

{% set value = 'NO space in source code after/before "value"' %} 
<li> {{- value -}} </li> 
... 

Ausgänge in Firebug im HTML-Markup: no whitespaces afer value

Während diese

{% set value = 'space in source code after "value"' %} 
<li> {{- value }} </li> 
... 

ouputs:

whitespace between "value" and closing </li>

Hinweis der Raum zwischen "Wert" und dem Schließen </li> in dem zweiten Beispiel. So löscht das Minuszeichen - einen Leerraum entweder vor, nach oder auf beiden Seiten von z. eine Variable.

+0

Vielen Dank für die ausführliche Antwort. – nonlux

+0

Wäre interessant zu verstehen, ob der "whitespace control modifier" nur in Bezug auf Markup benötigt wird oder wenn er auch zwischen * TWIG * Anweisungen geteilt durch Leerzeichen benötigt wird (wie '' '{% if true%} (Leerzeichen | Zeilenumbruch in der Vorlage) {% set something = {}%} ''), ** und ** falls der Modifikator auf beiden Seiten benötigt wird ('' '.. true -%}' '' '' '' {% - set. .''') oder nur einer ist genug. – Kamafeather

+0

Ok, ich habe es gerade ausprobiert. Eigentlich ist es wichtig. Aber nur ein Modifikator (auf '' 'True%}' '' oder auf '' '{% set''') ist genug.Ansonsten scheint, dass alle Abstände berücksichtigt werden (entweder zwischen reinen TWIG-Anweisungen ohne HTML-Markup). – Kamafeather