Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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