Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 细枝主布局中的模板名称_Php_Symfony_Twig - Fatal编程技术网

Php 细枝主布局中的模板名称

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

是否可以在twig中获取布局中的子模板的名称? 例如,在呼叫时:

$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