Twig 将数据分成表格

Twig dividing data into tables

我正在开发一个网络应用程序,但我 运行 遇到了麻烦,我已经从我的数据库中收集了数据并将记录显示到数据中 table,我的问题是我不能只有一个 table 客户希望我根据列中的整数 (omloopNummer) 将 table 分成多个。

到目前为止我得到的最好的是使用以下代码它将 table 拆分为 4 个 tables 如果数据库中的整数将变为 1,2,3, 4 但它只会在每个 table 中显示 1 条记录,而它应该更多。

如果有任何其他简单的解决方案而不是使用树枝,我很乐意尝试。

<div id="index" class="table-responsive">
{% set i = 1 %}
{% for duel in duels %}
    {% if duel.omloopNummer == i %}
        {% set i = i + 1 %}
<table id="" class="table display-" style="width: 90%; margin-top: 30px">
    <thead>
        <tr>
            <th>Omloop</th>
            <th>Team 1</th>
            <th>vs</th>
            <th>Team 2</th>
            <th>Acties</th>
        </tr>
    </thead>

    <tbody>
        <tr>
            <td>{{ duel.omloopNummer }}</td>
            <td>{{ duel.team1 }}</td>
            <td>vs</td>
            <td>{{ duel.team2 }}</td>
            <td>{{ include('duel/_delete_form.html.twig') }}</td>
        </tr>
    </tbody>
</table>
{% endif %}
{% endfor %}

您正在循环浏览决斗记录,但每个 omloopNumber 只显示一条记录。

你能否尝试将你的决斗记录分组到具有相同 omloopNumber 的数组中,然后将每个数组渲染为一个 Tablet。

或者在从数据库中获取数据时可以按omloopNumber 排序吗?然后你可以在一个循环中完成它,每次 omloopNumber 增加你开始一个新的 table.

在传递给 twig 之前,您可以在控制器中使用 PHP 通过 omloopNummerDuels 进行分组。

$duels = $duelRepository->findAll();
$sorted = [];
foreach($duels as $duel){
  $sorted[$duel->getOmloopNummer()][] = $duel;
}

return $this->render('template.html.twig', [
  'duel_groups' => $sorted,
]);

然后在 twig 中,循环遍历排序数组,为每个非空组构建一个 table 并在 each 内部tbody 遍历该组。

{% for group in duel_groups %}
  ...
  {% if group is not empty %}
  <table>
    ...
    <tbody>
      {% for duel in group %}
        <tr>...</tr>
      {% endfor %}
    </tbody>
  </table>
  {% endif %}
  ...
{% endfor %}