Php 细枝主布局中的模板名称
是否可以在twig中获取布局中的子模板的名称? 例如,在呼叫时:Php 细枝主布局中的模板名称,php,symfony,twig,Php,Symfony,Twig,是否可以在twig中获取布局中的子模板的名称? 例如,在呼叫时: $app['twig']->render('index.twig'); 然后在layout.twig(主要布局)中,它应该询问: if page is index.twig => include this javascript 我可以在render调用中使用其他变量来实现这一点,但这似乎有些臃肿,因为模板名称已经表明了这一点。您看得不对。想象一下,如果你有很多视图,那么你必须对每个视图都这样做: {% if _se
$app['twig']->render('index.twig');
然后在layout.twig(主要布局)中,它应该询问:
if page is index.twig => include this javascript
我可以在render调用中使用其他变量来实现这一点,但这似乎有些臃肿,因为模板名称已经表明了这一点。您看得不对。想象一下,如果你有很多视图,那么你必须对每个视图都这样做:
{% if _self.getTemplateName() == 'index.twig' %}
<script src="{{ asset('somescript1') }}"></script>
{% endif %}
{% if _self.getTemplateName() == 'members.twig' %}
<script src="{{ asset('somescript2') }}"></script>
{% endif %}
{% if _self.getTemplateName() == 'news.twig' %}
<script src="{{ asset('somescript3') }}"></script>
{% endif %}
...
然后,在视图文件中:
{% extends 'AcmeHelloBundle::layout.html.twig' %}
....
{% block javascripts %}
<script src="asset('index.js')"></script>
{% endblock %}
{%extends'AcmeHelloBundle::layout.html.twig%}
....
{%block javascripts%}
{%endblock%}
基本上,您正在用新内容覆盖布局文件中的块。如果您的“layout.html.twig”(例如jquery)中有任何内容,您还必须调用parent():
{%extends'AcmeHelloBundle::layout.html.twig%}
....
{%block javascripts%}
{{parent()}}
{%endblock%}
parent()。想象一下,如果你有很多视图,那么你必须对每个视图都这样做:
{% if _self.getTemplateName() == 'index.twig' %}
<script src="{{ asset('somescript1') }}"></script>
{% endif %}
{% if _self.getTemplateName() == 'members.twig' %}
<script src="{{ asset('somescript2') }}"></script>
{% endif %}
{% if _self.getTemplateName() == 'news.twig' %}
<script src="{{ asset('somescript3') }}"></script>
{% endif %}
...
然后,在视图文件中:
{% extends 'AcmeHelloBundle::layout.html.twig' %}
....
{% block javascripts %}
<script src="asset('index.js')"></script>
{% endblock %}
{%extends'AcmeHelloBundle::layout.html.twig%}
....
{%block javascripts%}
{%endblock%}
基本上,您正在用新内容覆盖布局文件中的块。如果您的“layout.html.twig”(例如jquery)中有任何内容,您还必须调用parent():
{%extends'AcmeHelloBundle::layout.html.twig%}
....
{%block javascripts%}
{{parent()}}
{%endblock%}
parent()
也要确保复制父块中的所有内容。我认为这个问题基本相同:我认为这个问题基本相同:用法更改为\u self.getTemplateName()
。请注意,这将返回一个Twig\u标记
对象。如果您严格需要字符串,则使用\u self.getTemplateName()。\u toString
。用法更改为\u self.getTemplateName()
。请注意,这将返回一个细枝标记
对象。如果您严格地需要字符串,请使用\u self.getTemplateName()。\u\u toString
。