2015-04-19 7 views
1

Я хочу делать то, что подразумевает этот блок кода:Есть ли способ загрузить Twig, условно?

{% if load_base %} 
    {% extends "base.html" %} 
{% endif %} 

Так что, если load_base это не так, я не хочу любой распространяется на всех. Этот шаблон содержит только один блок контента, и я хочу, чтобы этот контент был напечатан так, как если бы строка {% extends%} не была включена.

В документах я видел около conditional inheritance, но мне все еще требуется создать пустой файл шаблона, который кажется взломанным. Есть ли лучший способ обойти это?

ответ

0

Вы не можете. Создание пустого шаблона также не будет работать. Расширяющийся шаблон только модифицирует блоки с одинаковыми именами.

Существует пример: http://twigfiddle.com/hx5a0e

{# main.twig #} 
{% extends "base.twig" %} 

{% block a %}a{% endblock %} 
{% block b %}b{% endblock %} 

,

{# base.twig #} 
{% block a %}{% endblock %} 

Выход main.twig будет всегда a. Содержимое блока b просто игнорируется, поскольку оно не находится в базовом шаблоне. Таким образом, «расширение ничего» не имеет смысла, потому что никакого вывода вообще не будет.

Вы должны написать простой шаблон, содержащий только определения блоков в правильном порядке.

+0

Да, извините ... вот что я имел в виду под «пустым шаблоном» ... это не что иное, как пустые блоки. Это просто отстой, что шаблон, с которым я работаю, выводит точный код, который я хочу, если я вынимаю тег extends. Но иногда мне нужен код, который выводится с тегом extends. И нет никакого способа сделать это условным. –

Смежные вопросы