php - Twig - 从包含的或父模板渲染 block

标签 php symfony twig

有什么方法可以从包含的模板或父模板中渲染 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/

相关文章:

php - 在 XAMPP (WINDOWS 8.1) 中将 PHP 中的 Python 作为脚本运行

php - 如何使用 Symfony Serializer 反序列化复杂对象数组?

symfony - Doctrine2 两个表之间没有定义关联的innerJoin

javascript - 将 javascript 变量传递给 Twig

PHP: 没有那个文件或目录

php - 回显用户喜欢的类别的分层MySQL表

php - 使用 SQL 将 2 个结果合并为 1 个

postgresql - 使用参数而不是硬编码字符串时,Postgres 查询非常慢

javascript - Jquery 函数 submit() 在 ajax 成功函数中不起作用

html - Adobe Dreamweaver CS6(和 CC)不为 *.TWIG 文件/Notepad++ Auto-Twig 高亮执行代码高亮