如何获取包含在Symfony/Twig中的模板的名称



我在树枝中有一个部分模板,我将其包含在应用程序的不同模板中。

部分.html.树枝

<p>My partial template</p>

例如,我可以在另一个模板中使用此模板:

my_template.html.树枝

<% include partial.html.twig %>

我的目标是以某种方式动态获取包含part.html.twig的所有模板名称。

这可能吗?

我也(像Stratadox一样(怀疑这是否正是你应该做的,但无论如何,如果你必须获取包含partial.html.twig模板的所有模板,你可以像这样使用Symfony Finder组件:

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

现在,您可以使用这些名称执行任何操作。

当然,当包含包含此字符串的partial.html.twig或注释时,您必须处理双引号和单引号等问题,而没有真正包含模板(不太可能的情况(。

您可以通过使用合适的正则表达式而不是字符串作为$findercontains()函数的参数来处理此问题(尤其是使用引号(。

最新更新