有什么方法可以从包含的模板或父模板中渲染 block 吗?
我有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->loadTemplate('content.html.twig')->renderBlock('navbar_profile_photo', array('image' => 'bar.jpg'))
但我只能从“content.html.twig”中获取 block
$twig->loadTemplate('content.html.twig')->getBlockNames();
返回
['application_content', 'foo']
我可以添加到 content.html.twig
{% use 'navbar.html.twig' %}
但在我的例子中,我不得不在许多模板中使用许多不同的 use 语句来完成
有没有办法获得包含所有包含、扩展和 block 的最终模板?
最佳答案
在 content.html.twig 文件中你必须添加:
{% extends "EverlutionApplicationBundle::main.html.twig" %}
{% block navbar_profile_photo %}
{{ parent() }}
{% endblock navbar_profile_photo %}
.....
关于php - Twig - 从包含的或父模板渲染 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867089/