我希望能够在树枝模板中隐式引用当前的包;通常你会看到:
{% stylesheets '@AppBundle/Resources/public/css/main.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
…
{%- include 'AppBundle:Alpha:nav.html.twig' -%}
但是,我不想强迫 AppBundle ,而是想说 ThisBundle :
{% stylesheets '@ThisBundle/Resources/public/css/main.css' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
…
{%- include 'ThisBundle:Alpha:nav.html.twig' -%}
目前是否可以采用这些方式?
答案 0 :(得分:3)
当然你可以这样做。首先阅读:http://symfony.com/doc/current/cookbook/templating/namespaced_paths.html
树枝名称空间处理器实际上并不关心(甚至真正了解)束。相反,它维护一个数组,该数组将@whatever映射到查找所需文件的一个或多个位置。
默认情况下,symfony TwigBundle:DependencyInjection:TwigExtension类将所有现有的bundle添加到此数组中。检查代码是有益的。
您真正需要做的就是将路径添加到config.yml
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
paths:
"%kernel.root_dir%/../src/Cerad/Bundle/AppBundle/Resources/views": ThisBundle
当然,实际上没有“当前”捆绑这样的东西。您仍然需要设置资源路径,如上所示。但我很确定这会满足您的需求。
很抱歉所有的修改。为此,您需要专门使用twig命名空间。如下所示:
{%- include '@ThisBundle/Alpha/nav.html.twig' -%}
答案 1 :(得分:2)
不,这是不可能的。
但是,您可以创建一个CoreBundle
来存储通用模板,例如导航和网站范围的样式表。
答案 2 :(得分:1)
不,你不能。并且确实没有真正的用例,您应该能够做到这一点。一个bundle知道它自己的名字,因为它知道它的bundle类(这是名字)并且至少它知道命名空间,这是包名......没有办法改变它捆绑名称而不更改捆绑包。