Как получить названия шаблонов, где шаблон включен в Symfony / Twig - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть частичный шаблон в ветке, который я включаю в различные шаблоны моего приложения.

part.html.twig

<p>My partial template</p>

Так, например, яможно использовать этот шаблон в другом шаблоне:

my_template.html.twig

<% include partial.html.twig %>

Моя цель состоит в том, чтобы каким-то образом получить все имена шаблонов, где частичная .html.twig включен, динамически.

Возможно ли это?

1 Ответ

0 голосов
/ 17 сентября 2018

Я также (как и Stratadox) сомневаюсь, что это именно то, что вам нужно, но в любом случае, если вам нужно получить все шаблоны, в которые включен шаблон partial.html.twig, вы можете использовать Symfony Finder Component, как этот:

// App/Controller/DefaultController.php
public function foo(){
    $templatesDir = $this->get('kernel')->getProjectDir() . '/templates';
    $finder = new Symfony\Component\Finder\Finder();
    $finder->files()->in($templatesDir)->contains("{% include 'partial.html.twig' %}");
    $templateNames = [];
    foreach ($finder as $template) {
        $templateNames[] = $template->getFilename();
    }
}

Теперь вы можете делать что угодно с этими именами.

Конечно, вы должны иметь дело с такими проблемами, как двойные и одинарные кавычки, когда включаете partial.html.twig или комментарии, которые включают эту строку, без реального включения шаблона (не очень вероятный случай).

Вы можете решить эту проблему (особенно с помощью кавычек), используя подходящее регулярное выражение вместо строки в качестве аргумента функции contains() $finder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...