Twig макросов VS включает? - PullRequest
       16

Twig макросов VS включает?

15 голосов
/ 03 октября 2011

Я не могу по-настоящему понять разницу между макросами и , включая в Twig: оба, кажется, делают то же самое, то есть принимают некоторые переменные и что-то выводят.

В чем разница и почему вы используете макрос или включаете?

Ответы [ 2 ]

18 голосов
/ 19 января 2012

С включениями вы включили бы весь шаблон дословно. Этот шаблон будет иметь доступ к любым переменным шаблона, которые в настоящее время находятся в области видимости.

С помощью макросов вы определяете тип функции внутри Twig (не путать с функцией Twig, которая может обращаться к другой логике приложения, а не только к данным, передаваемым в шаблоны), которые могут отображать определенный компонент с соответствующими объектами. Таким образом, у вас может быть макрос для рендеринга, скажем, списка покупок, который принимает список покупок в качестве параметра - и вы можете затем повторно использовать этот макрос, не беспокоясь о том, передали ли вы данные в шаблон таким же образом в другом месте. Переменные, явно не переданные в макрос, не будут находиться в пределах этого макроса.

Макрос должен действительно выполнить одну конкретную задачу, чтобы получить некоторые данные и визуализировать повторно используемый компонент. Включение может включать в себя любой кусок вещей - это гораздо больше зависит от вас. Расширяемая природа работы шаблонов Twig, в отличие от чего-то вроде Smarty, означает, что вы, скорее всего, будете использовать меньше по своему замыслу, но все же могут быть случаи использования, когда это будет самый простой способ избежать дублирования в ваших шаблонах. .

1 голос
/ 08 октября 2011

Я новичок в Symfony2, но я думаю, что разница между макросом ветки и включением заключается в следующем.

include: используется для определения общих частей на странице, таких как заголовок, боковая панель или слот.

макрос: используется для определения функций, связанных с видом, таких как разбиение на страницы.

...