如何在同一个li元素中处理2个嵌套循环而不重复

问题描述 投票:1回答:2

我有2个变量数组,一个用于显示主题,另一个用于显示每个主题的最后一篇文章。每次显示主题时都会重复发布一个帖子。如何在同一元素li中管理这两个循环

{% for lasttopic in lasttopics %}
   <li class="row bg2">                  
      <div class="list-inner">
         <a href="{{ path('showtopic', {'id': lasttopic.id}) }}" class="topictitle">
            {{ lasttopic.title }}
         </a><br />
      </div>
      {% for lastpost in lastposts %}
          Par <a href="" class="username">
                 {{ lastpost[0].user.username }}
              </a>
              <a href="" title="Go to last post" class="lastpost-last">
                 <i class="fa fa-arrow-right"></i>
              </a>
              <br />{{ lastpost[0].created|date('d/m/Y') }}
       {% endfor %}
   </li>
   <hr>
{% endfor %}
arrays symfony twig
2个回答
0
投票

在你的控制器中,你可以创建两个数组:lastTopicslastPostByTopic[ID_TOPIC]。或者将两个表合并为一个多维。

Controller

[
    'topic' => Your topic object,
    'lastMessage' => Last message object
],
[
    'topic' => Your topic object,
    'lastMessage' => Last message object
],
[
    'topic' => Your topic object,
    'lastMessage' => Last message object
]

Twig

{% for element in topics %}
    {{ dump(element.topic) }}
    {{ dump(element.lastMessage) }}
{% endif %}

Twig中的连续循环并不好。 :)


0
投票

谢谢您的回答。我解决了这个问题。

Add in Topic entity

public function countPosts()
{
    return count($this->posts);
}

public function lastPost() {
    return $this->posts[$this->countPosts()-1];
}

In Twig template

{% for lasttopic in lasttopics %}
   <a href="" class="topictitle">
      {{ lasttopic.title }}
   </a>
{% if lasttopic.countPosts > 0 %}
   <span>
      <a href="" class="username">
        {{ lasttopic.lastPost.title }}
      </a>
   </span>
   <span>
      <a href="" class="username">
        {{ lasttopic.lastPost.auteur.username }}
      </a>
   </span>
{% endif %}
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.