2016-03-13 10 views
1

Я создал основы использования TWIG для создания моего сайта. Я полагаю, я знаю, как использовать {%extend%}{%block%}{%include%} и {%set%}, в самом общем смысле.Включая элемент id или переменную из другого шаблона TWIG

Я хотел бы включить блок кода из другого файла twig без включения всего файла - в отличие от {% include 'file.twig' %}.

Я выяснил, как установить переменную в file.twig и вывести ее с помощью {{ variable | raw }}. Я хотел бы сделать это в другом файле, например, с помощью функции jQuery .load.

Клянусь, документация на твип, похоже, не затрагивает этого, это кажется действительно очевидной и базовой функциональностью. Я перепутал с различными комбинациями include, for, with, in и only, colons и commas и что угодно | есть, и ничего.

ответ

0

Я считаю, что вы ищете горизонтального наследования через use tag:

Использование оператор говорит Twig импортировать блоки, определенные в blocks.html в текущий шаблон (это как макросы, но и для блоков)

Запутанная часть является то, что самим по себе, {% use ... будет на самом деле не вставить содержание блоков в ссылочном шаблоне. Чтобы сделать это, вы должны использовать block(...) функцию:

index.twig

{% use "blocks.twig" %} 

{{ block('name') }} 

blocks.twig

{% block name %} 
    <h1>Alex Weissman</h1> 
{% endblock %} 

{% block hobby %} 
    <p>Blanchin'</p> 
{% endblock %} 

Для рабочего примера см мой TwigFiddle (да, это реальная вещь!): http://twigfiddle.com/jjbfug

+0

Спасибо, немного подумал, чтобы понять, что я другие имена, используемые на странице, похожие, не одинаковые, но все же вмешивающиеся. Немного отличающаяся функциональность (восприимчивость к прослушиванию) к тому, к чему я привык, но думаю, что у меня это получилось, по крайней мере, в этом случае. Теперь мне интересно, какой правильный синтаксис для вывода HTML-кода, размещенного в блоках TWIG 'на той же странице? – MikeyB

+0

Просто используйте HTML так же, как и в другом месте. – alexw