Ответ 1
Что насчет
{% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}
Я обнаружил, что включение шаблона с этим путем отлично работает
{% include 'AcmeDemoBundle:TemplateArchive:view.html.twig' with {'data': c.data} %}
Пока это не разрешено:
{% include 'AcmeDemoBundle:TemplateArchive:6:view.html.twig' with {'data': c.data} %}
Другими словами, я пытаюсь найти шаблоны, которые я отсортировал в структуре подпапки в моей папке/ресурсах/представлениях/папке.
Если мне не разрешено развернуть все глубже обычного одноуровневого включения с моей первой строки, есть ли другой/лучший способ структурирования этих файлов шаблонов?
(имя папки "6" представляет собой идентификатор шаблона из базы данных, который я хотел бы включить, он должен быть динамическим и сортироваться в папках, подобных этому...).
Я пробовал называть мои шаблоны-папки "t6", но никакой разницы, "номер без ведущих букв" здесь не проблема...
Что насчет
{% include 'AcmeDemoBundle:TemplateArchive:6/view.html.twig' with {'data': c.data} %}
Оба работают:
AcmeDemoBundle:TemplateArchive:6/view.html.twig
AcmeDemoBundle:TemplateArchive/6:view.html.twig
Как и в 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: пути с именами]:
В качестве дополнительного бонуса синтаксис с расширением имен выполняется быстрее.