与Twig同时使用3个模板

角落

使用{% extends %}组装3个Twig模板时遇到麻烦{% use %}

我知道如何组装2个模板,{% extends %}但是我不知道如何添加第三个模板我有两种不同类型的错误: Circular reference detected for Twig template "home.html.twig", path: home.html.twig -> twtts.html.twig -> home.html.twig OR Template "twtts.html.twig" cannot be used as a trait.

我不明白这有什么问题:

{# home.html.twig #}

{% extends 'layout.html.twig' %}
{% use 'twtts.html.twig' %}
{% block assets %}
<script src="/assets/js/actions.js"></script>
{% endblock %}
{% block page_title %}Twttr | Home{% endblock %}

{% block content %}
<div class="container d-flex">
    <div class="col-md-3"></div>
    <div class="col-md-6">
        <table class="table col-md-6 mt-5" id="twtts">
            {% block twtts %}
            {% endblock %}
        </table>
    </div>
    <div class="col-md-3"></div>
</div>
{% endblock %}

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

_

{# twtts.html.twig #}

{% block twtts %}
{% for twtt in twtts %}
<tr class="">
    <td class="col-md-6">
        <div class="media pr-4 pl-4 pt-4 pb-3">
            <a href="/profile/{{twtt.author_name}}">
            {% if twtt.pp_url is not empty %}
                <img src="{{ twtt.pp_url }}" alt="{{ twtt.author_name }} profile picture" class="align-self-start twtt-thumbnail mr-3 ml-3">
            {% else %}
                <img src="/assets/pp/default_pp.png" alt="PP-Pro" class="align-self-start twtt-thumbnail mr-3 ml-3">
            {% endif %}
            </a>
            <div class="media-body position-relative">
                {% if twtt.rt_author_name is not null %}
                <small class="text-muted position-absolute rtwtt-msg">{{ twtt.rt_author_name }} rtwtted :</small>
                {% endif %}
                <h5 class="mt-0 d-flex justify-content-between">
                    <a href="/profile/{{twtt.author_name}}" class="text-dark">{{ twtt.author_name }}</a>
                    <span>{% if twtt.rt_author_name is not null %}{{ twtt.post_time|date("d/m/Y H:i") }}{% else %}{{ twtt.date|date("d/m/Y H:i") }}{% endif %}</span>
                </h5>
                <p>{{twtt.content|nl2br}}</p>
                <div class="media-footer d-flex justify-content-center">
                    <div class="actions d-flex justify-content-around">
                        <div class="rtwtt {% if twtt.rtwtted == true %}text-success{% endif %}" data-twtt={{ twtt.id }}><span class="rt-nbr">{{ twtt.rtwtts }}</span><i class="fas fa-retweet"></i></div>
                        <div class="fav {% if twtt.faved == true %}text-warning{% endif %}" data-twtt={{ twtt.id }}><span class="fav-nbr">{{ twtt.favs }}</span><i class="fas fa-star"></i></div>
                    </div>
                </div>
            </div>
        </div>
    </td>
</tr>
{% endfor %}
{% endblock %}

_

{# layout.html.twig #}


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>{% block page_title %}{% endblock %}</title>
  {# ... #}
  {% block assets %}{% endblock %}
</head>
<body>
  <main>
    <div class="container">
      {% block content %}{% endblock %}
    </div>
  </main>
</body>
</html>

它曾经在文件进入时起作用twtts.html.twighome.html.twig但由于我将其重用于许多其他页面,因此我试图将其缩短,并为此模板制作文件。

阿扎尔·哈塔克(Azhar Khattak)

如果您只想从中渲染内容twtts.html.twig,则应使用include

{# home.html.twig #}

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

{% block content %}
<div class="container d-flex">
    <div class="col-md-3"></div>
    <div class="col-md-6">
        <table class="table col-md-6 mt-5" id="twtts">

{%include'twtts.html.twig'%} <====包括要渲染的位置

        </table>
    </div>
    <div class="col-md-3"></div>
</div>
{% endblock %}

有关和的区别include请参见以下线程use包含,扩展,使用,宏,嵌入嫩枝之间的区别

谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章