Twig - 从包含或父模板渲染块

时间:2014-09-16 11:03:53

标签: php symfony twig

有没有办法从包含或父模板渲染块?

我有3个模板

main.html.twig:

{% include 'navbar.html.twig' %}

<div id="main_content">
    {% block application_content %}
    {% endblock application_content %}
</div>

{% block application_footer %}
    footer
{% endblock application_footer %}

navbar.html.twig:

<p>bla bla</p>
{% block navbar_profile_photo %}
    <img src="{{ image }}">
{% endblock navbar_profile_photo %}

content.html.twig:

{% extends "main.html.twig" %}

{% block application_content %}
   lorem ipsum

   {% block foo %}
       dolor sit amet
   {% endblock foo %}

{% endblock application_content %}

我希望能够调用类似的内容

  

$ twig-&gt; loadTemplate(&#39; content.html.twig&#39;) - &gt; renderBlock(&#39; navbar_profile_photo&#39;,数组(&#39;图像&#39; =&gt; &#39; bar.jpg&#39;))

但我只能从&#39; content.html.twig&#39;

中获取
  

$ twig-&GT; loadTemplate(&#39; content.html.twig&#39;) - &GT; getBlockNames();

返回

  

[&#39; application_content&#39;,&#39; foo&#39;]

我可以添加到content.html.twig

  

{%use&#39; navbar.html.twig&#39; %}

但在我的情况下,我必须在许多模板中使用许多不同的使用语句

有没有办法让所有包含和扩展和阻止的最终模板?

1 个答案:

答案 0 :(得分:0)

在content.html.twig文件中,您必须添加:

{% extends "EverlutionApplicationBundle::main.html.twig" %}
{% block navbar_profile_photo %}
    {{ parent() }}
{% endblock navbar_profile_photo %}
.....