如何在此嵌套foreach的末尾添加空行? - Laravel Blade

时间:2016-11-07 21:03:25

标签: php laravel-5

我有一张游戏时间表。在我的控制器中,我正在这样做;

    $schedule = Schedule::where('season', '=', $season->id)
    ->where('date', '>', Carbon::now()->subDays(1))->get();

    foreach ($schedule as $item) {
        $date = new Carbon($item['date']);
        $months[$date->format("F Y")][] = $item;
    }

这允许我在我的刀片视图中执行此操作;

    @foreach ($months as $month => $items)
        <tr style="background-color: rgba(101, 101, 101, 0.4);">
           <td colspan="5">
             <strong>{{ $month }}</strong>
            </td>
        </tr>
        @foreach ($items as $item)
          <tr>
            <td width="20%">{{ date('D, M j', strtotime ($item['date'])) }}/td>
            <td width="20%">{{ $item['time'] }}</td>
            <td width="25%"><a href="{{ url('team', $item['home_team_id']) }}">{{ $item['home_team'] }}</a></td>
            <td width="25%"><a href="{{ url('team', $item['away_team_id']) }}">{{ $item['away_team'] }}</a></td>
            <td width="10%"><a href="gamesheet/{{ $item['id'] }}" target="_blank"><i class="fa fa-print" aria-hidden="true"></i></a></td>
          </tr>
         @endforeach
      @endforeach

到目前为止,这一点非常好,因为这会抓住月份并创建一个以月份为标题的明显行。

现在,我想尝试每周都这样做。得到这样的东西;

November 2016
Mon Nov 7 7:00PM Team A   Team B
Mon Nov 7 8:00PM Team C   Team D
<empty row here>
Mon Nov 14 7:00PM Team D Team A
Mon Nov 14 8:00PM Team B Team C
<empty row here>

我试过在我的控制器中定义一个星期数组,就像这样;

$weeks[$date->format("M j")][] = $item;

但是当月份发生变化时,它还需要结束循环。 有任何想法吗?我应该尝试在控制器中进一步循环吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用if循环内的foreach语句来实现此目的。

您只想在嵌套foreach循环的末尾添加此内容:

@if ($item == end($items))
  <tr></tr>
@endif

将检查当前$item$items中的最后一项。

这样的事情可以让你在那里大部分时间:

@foreach ($items as $item)
  <tr>
    <td width="20%">{{ date('D, M j', strtotime ($item['date'])) }}/td>
    <td width="20%">{{ $item['time'] }}</td>
    <td width="25%"><a href="{{ url('team', $item['home_team_id']) }}">{{ $item['home_team'] }}</a></td>
    <td width="25%"><a href="{{ url('team', $item['away_team_id']) }}">{{ $item['away_team'] }}</a></td>
    <td width="10%"><a href="gamesheet/{{ $item['id'] }}" target="_blank"><i class="fa fa-print" aria-hidden="true"></i></a></td>
  </tr>
  @if ($item == end($items))
  <tr></tr>
  @endif
@endforeach

虽然查看当前的foreach循环,但您可能最终得到此结果:

November 2016
Mon Nov 7 7:00PM Team A   Team B
Mon Nov 7 8:00PM Team C   Team D
Mon Nov 14 7:00PM Team D Team A
Mon Nov 14 8:00PM Team B Team C
<empty row here>

因此,如果您可以按日期进一步打破foreach循环,那么您可以使用此方法实现您的目标。