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

Symfony2 twig и несколько уровней подпапок

Я обнаружил, что включение шаблона с этим путем отлично работает

{% include 'AcmeDemoBundle:TemplateArchive:view.html.twig' with {'data': c.data} %}

Пока это не разрешено:

{% include 'AcmeDemoBundle:TemplateArchive:6:view.html.twig' with {'data': c.data} %}

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

Если мне не разрешено развернуть все глубже обычного одноуровневого включения с моей первой строки, есть ли другой/лучший способ структурирования этих файлов шаблонов?

(имя папки "6" представляет собой идентификатор шаблона из базы данных, который я хотел бы включить, он должен быть динамическим и сортироваться в папках, подобных этому...).

Я пробовал называть мои шаблоны-папки "t6", но никакой разницы, "номер без ведущих букв" здесь не проблема...

4b9b3361

Ответ 1

Что насчет

{% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}

Ответ 2

Оба работают:

AcmeDemoBundle:TemplateArchive:6/view.html.twig
AcmeDemoBundle:TemplateArchive/6:view.html.twig

Ответ 3

Как и в Symfony 2.2, вы также можете использовать Пути с именами:

{% include '@AcmeDemo/TemplateArchive/6/bar.html.twig' with {'data': c.data} %}

Вы даже можете определить свои собственные пространства имен:

# app/config/config.yml
twig:
    # ...
    paths:
        "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/views/TemplateArchive": TemplateArchive

И затем используйте его как:

{% include '@TemplateArchive/6/view.html.twig' with {'data': c.data} %}

Это также работает в контроллерах (с пользовательскими пространствами имен):

// TemplateArchiveController.php
return $this->render('@TemplateArchive/6/view.html.twig', ['data' => $c.getData()]);

Из [Symfony Cookbook: пути с именами]:

В качестве дополнительного бонуса синтаксис с расширением имен выполняется быстрее.