【问题标题】:Laravel: How can I set dynamic table headers from a nested foreach loop?Laravel:如何从嵌套的 foreach 循环中设置动态表头?
【发布时间】:2017-05-12 05:09:13
【问题描述】:

我的刀片模板中有这个标记:

<th>Name</th>
    @foreach($camp->athletes as $athlete)
        @foreach($athlete->kickoffs as $key=>$kickoff)
            <th>D#{{ ($key+1) }}</th>
            <th>H#{{ ($key+1) }}</th>
        @endforeach
    @endforeach
<th>Avg. Distance</th>
<th>Avg. Hang Time</th>
<th>Score</th>

当我只有一个运动员时,这非常有效。但是,当我开始添加更多内容时,很明显我将为每个运动员重复 &lt;th&gt; 元素。我得到的是这样的东西:

<th>D#1</th>
<th>H#1</th>
<th>D#2</th>
<th>H#2</th>

<th>D#1</th>
<th>H#1</th>
<th>D#2</th>
<th>H#2</th>

我完全理解为什么会出现这样的重复 - 不过我不知道如何避免这种情况。就像我需要这样做:

...
<th>Name</th>

        @foreach($athlete->kickoffs as $key=>$kickoff)
            <th>D#{{ ($key+1) }}</th>
            <th>H#{{ ($key+1) }}</th>
        @endforeach

<th>Avg. Distance</th>
...

这样我只能得到这个输出:

<th>D#1</th>
<th>H#1</th>
<th>D#2</th>
<th>H#2</th>

但我不能像那样直接访问$athlete 变量。

【问题讨论】:

  • 创建一个按照您希望它们出现的顺序的标题列表,并为您的标题迭代该列表。然后,您可以使用该数组迭代运动员的每一行并以相同的顺序访问键:`foreach ($columns as $column) echo $athlete->{$column};
  • 好吧,我并没有完全使用您的解决方案 - 但它确实引发了一个想法,让我找到了解决方案,所以谢谢!
  • 很高兴我能帮助@damon。

标签: laravel laravel-5 laravel-5.3 laravel-blade


【解决方案1】:

这是我想出的,这样无论我有多少运动员,我的表格标题都只会呈现一次。

my-view.blade.php

<?php $i = 0; ?>
@foreach($camp->athletes as $athlete)
    @foreach($athlete->kickoffs as $key=>$kickoff)
        @if(($key+1) > $i)
            <th>D#{{ ($key+1) }}</th>
            <th>H#{{ ($key+1) }}</th>
            <?php $i++; ?>
        @endif
    @endforeach
@endforeach

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2022-12-20
    • 2021-05-05
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多