2013-05-19 2 views
14

Qual è la differenza tra questo:Minus In definizione di blocco ramoscello

{%block body %} 

e che

{%block body -%} 
+0

possibile duplicato di [Che cosa significa il trattino per un blocco in Twig come in {% block body -%}?] (Http://stackoverflow.com/questions/17298902/what-does-the-hyphen-mean -per-un-blocco-in-ramoscello-nel-blocco-corpo) –

+3

Sì, ma ho chiesto il 19 maggio '13 alle 11:56 e \t Michaël Perrin chiesto 25 giugno 13 alle 13:38. E in questa pagina abbiamo un'ottima risposta da SirDerpington – nonlux

risposta

26

Basta leggere qualcosa al riguardo nella documentazione, non so se questo si applica anche su {% block ... %} tag. Twig whitespace control

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

C'è anche un altro esempio in cui rifila gli spazi di fronte alla variabile ma doesnt't farlo alla fine - così l'effetto è solo su un lato.

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

L'esempio sopra mostra il modificatore di controllo di default spazi, e come si può utilizzare per rimuovere gli spazi bianchi intorno tag. Lo spazio di ritaglio consumerà tutti gli spazi bianchi per quel lato del tag. E 'possibile utilizzare gli spazi bianchi taglio su un lato di un tag

Quindi penso che la differenza nei vostri dati exmaples è che nel primo blocco body ci sarà uno spazio bianco dopo il blocco iniziato. Nel secondo esempio, body - non ce n'è nessuno dopo l'avvio del blocco. Basta leggere la voce della documentazione per vedere come funziona.

EDIT

Un semplice esempio per illustrare l'esempio nella docu:

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

uscite Firebug nel markup HTML: no whitespaces afer value

considerando questo

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

ouputs:

whitespace between "value" and closing </li>

Nota lo spazio tra "valore" e la chiusura </li> nel secondo esempio. Quindi il meno - cancella/taglia uno spazio bianco prima, dopo o su entrambi i lati di es. una variabile.

+0

Grazie mille per la risposta dettagliata. – nonlux

+0

Sarebbe interessante capire se il "modificatore di controllo degli spazi bianchi" è necessario solo per quanto riguarda il markup o se è necessario anche tra le istruzioni * TWIG * divise per spazi (come '' '{% se true%} (spazio | newline nel modello) {% imposta qualcosa = {}%} '' '), ** e ** se il modificatore è necessario su entrambi i lati (' '' .. true -%} '' '/' '' {% - set. .''') o ne basta uno solo. – Kamafeather

+0

Ok, l'ho appena provato. In realtà conta. Ma basta un solo modificatore (su '' 'true%}' '' o su '' '{% set''').Altrimenti sembra che tutte le spaziature siano considerate (sia tra le istruzioni TWIG pure senza markup HTML). – Kamafeather