2016-11-07 38 views
1

我有一個遊戲時間表。在我的控制器中,我正在做這件事;如何在此嵌套的foreach的末尾添加空白行? - Laravel Blade

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

但它還需要在月份更改時結束循環。 任何想法?我應該試圖在控制器中做進一步的循環嗎?

謝謝!

回答

0

您可以在foreach循環內使用if語句來實現此目的。

你只是想在你的嵌套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循環,然後您可以使用此方法實現您的目標。