php - 如何获取模板包含在 Symfony/Twig 中的模板名称
问题描述
我在 twig 中有一个部分模板,我包含在我的应用程序的不同模板中。
部分.html.twig
<p>My partial template</p>
所以例如我可以在另一个模板中使用这个模板:
my_template.html.twig
<% include partial.html.twig %>
我的目标是以某种方式动态获取包含partial.html.twig的所有模板名称。
这可能吗 ?
解决方案
我也(像 Stratadox 一样)怀疑这是否正是你应该做的,但无论如何如果你必须获得partial.html.twig
包含模板的所有模板,你可以像这样使用 Symfony Finder 组件:
// 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
.
推荐阅读
- javascript - 如何在 Blazor SignalR 中发送带有文本的表情符号
- hashicorp-vault - 仅列出路径中的键
- c# - 如何处理第三方代码中的死锁
- xcode - 如何更改 Mac 应用程序上的应用程序支持路径?
- chisel - Chisel:如何在 ChiselScalatestTester 中等待信号断言?
- xampp - Xampp 端口被另一个程序占用
- javascript - 从当前光标位置获取指定范围内的节点列表
- excel - Excel Power Pivot 中的连续运行总计
- momentjs - 无法正确获取天数
- javascript - 如何在窗口视图中将活动类添加到部分?