2013-03-16 2 views
0

(a) Пакет (пакет 1) содержит основной родительский шаблон Twig.Конкретный динамический путь вставки для Twig в Symfony2

(b) Еще один комплект (комплект 2) содержит нагрузку контроллеров, и каждый из этих контроллеров отображает шаблон Twig внутри этого пакета (комплект 2). Этот шаблон также простирается от основного родителя, указанного выше (комплект 1). Жесткое кодирование абсолютного пути к основному родительскому шаблону в порядке.

(c) Родительский шаблон (внутри пакета 1) также включает/включает другой шаблон, который хранится в другом комплекте (комплект 2).

Могу ли я установить относительный путь для части (c) выше, чтобы, если бы я создал другой комплект (комплект 3), он автоматически работал бы (родительский шаблон включает шаблоны из пакета, который его вызывает)? Он подобрал бы основного родителя, поскольку это абсолютный путь, но возьмет ли он часть (с) выше? Очевидно, я не могу использовать абсолютный путь для шаблонов, которые родительский встраивает/включает.

ответ

0

Если я правильно понимаю, вы спрашиваете, как легко расширять шаблоны, имея зависимости от одного пакета к другому.

Я бы посоветовал вам прочитать эту документацию о overriding bundle templates.

После этого вы заметите ссылку, указывающую на [документацию наследования на расслоение].

В качестве примера, мы имеем 3 связки с явными именами: - GenericSiteBundle - GenericUserBundle - SpecificSiteBundle

Мы хотим создать общую структуру для приложения, которое можно было бы использовать в других приложениях, и мы также хотим, они должны быть разными, поэтому мы должны иметь возможность изменять макет (заголовок, нижний колонтитул, столбцы и т. д.).

Структура шаблона была бы чем-то вроде extends GenericSiteBundle:Layout:simple.html.twig.

Вы хотите изменить простой макет с конкретным; все, что вам нужно сделать, это объявить GenericSiteBundle родителем SpecificSiteBundle и создать SpecificSiteBundle:Layout:simple.html.twig. Убедитесь, что только имя пакета отличается, иначе он не найдет шаблон в дочернем узле.

Также вам понравится parent() twig function. Он позволяет захватить содержимое родительского блока и добавить его в дочерний блок.

Это не совсем то, что вы хотите сделать, но это правильный способ обработки наследования.