Laravel:如何从嵌套的foreach循环中设置动态表头?

时间:2016-12-27 22:53:48

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

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

<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>

当我只有一名运动员时,哪个效果很棒。但是,当我开始添加更多时,显然我将为每个运动员重复<th>元素。这样的事情就是我得到的:

<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变量。

1 个答案:

答案 0 :(得分:0)

这就是我想出的结果,这样无论我有多少运动员,我的桌面标题都只会呈现一次。

我-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