2013-02-06 10 views
17

In primo luogo, vorrei iniziare con il codice che sto tentando di utilizzare:Come è possibile eseguire l'override condizionale di un blocco di layout TWIG?

{% if modal == true %} 
    {% block header %}{% endblock %} 
    {% block footer %}{% endblock %} 
{% endif %} 

Quello che sto cercando di realizzare è quello di non mostrare le mie intestazione e piè blocchi solo se la variabile chiamata modale è vero. Ho anche questo sotto l'istruzione if:

{% block content %} 
    {{ dump(modal) }} 
{% endblock %} 

Quello che succede qui è che il mio override per svuotare i blocchi di intestazione e piè corre sempre a prescindere se il valore di modale è vero o meno. Quindi, lo eseguo con modal inoltrato come falso e il risultato è che l'intestazione e il piè di pagina non vengono ancora visualizzati. L'output del comando dump mostra con precisione vero o falso, ma la condizione sembra sempre valutare true nell'istruzione if.

I blocchi non possono essere racchiusi in un'istruzione condizionale oppure è necessario aggiungere qualcosa per farlo funzionare?

Grazie per l'aiuto che puoi offrire.

risposta

21

blocchi non si preoccupano di ogni logica intorno ad esso, come ha detto in the documentation:

Un blocco fornisce un modo per cambiare il modo di una certa parte di un modello è resa, ma non interferisce in alcun modo con la logica intorno ad esso.

Si dovrebbe mettere quella logica all'interno del blocco, non sul lato esterno, come si può vedere sull'ultimo esempio in quell'articolo.

+0

Grazie. Stavo solo parlando con un collega che ha suggerito la stessa cosa. Ha detto di provare a rendere il blocco genitore se modale non è vero. – slave2zeros

42

Definire

{% block footer %}Some standard content{% endblock %} 

nel modello padre ramoscello. Poi, nel modello in cui si vuole decidere se visualizzare il contenuto del piè di pagina si può fare:

{% block footer %} 
    {% if not modal == true %} 
    {{ parent() }} 
    {% endif %} 
{% endblock %} 

Se il modale è vero - piè di pagina sarà vuota, se non - nel piè di pagina verranno stampati "Alcuni contenuti standard"

+5

Sebbene la risposta accettata sia corretta, questa risposta prende questo approccio e mostra come implementare effettivamente tale soluzione. +1 per {{parent()}} –

+0

Questa è la risposta migliore in quanto torna ai valori predefiniti – numediaweb

Problemi correlati