【问题标题】:Twig: Override elements with embedTwig:使用嵌入覆盖元素
【发布时间】:2016-09-07 07:33:08
【问题描述】:

我有以下模板结构,我想用嵌入覆盖一个块:

base.html.twig

<!DOCTYPE>
<html>
   <head></head>
   <body>
      {% embed 'header.html.twig' %}
         {% block content %}{% endblock %}
      {% endembed %}
   </body>
</html>

header.html.twig

{% block content %}{% endblock %}

page.html.twig

{% extends 'base.html.twig' %}

{% block content %}
   <p>Some content</p>
{% endblock %}

如果我现在用我的控制器加载 page.html.twig,我认为它应该显示“一些内容”,但它不起作用。有谁知道我做错了什么?

【问题讨论】:

  • 您需要在base.html.twig 中阻止content。嵌入标签中提到的不计算在内。如果你想从页面操作标题,你可以在嵌入标签周围添加一个(例如)header_wrapper 块。

标签: php twig symfony


【解决方案1】:

“embed 标签结合了 include 和 extends 的行为。它允许你包含另一个模板的内容,就像 include 一样。但它也允许你覆盖定义在包含的模板中的任何块,就像扩展模板时一样。 " twig document about embed block

您可以使用导入或包含。我建议包括这种状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多