2016-12-27 103 views
1

我有這個標記在我的刀模板:Laravel:如何從嵌套的foreach循環設置動態表頭?

<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>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變量這樣。

+0

創建標題列表,它是在你想他們是在和迭代,對你的頭的順序。然後,您可以使用該陣列在運動員的每一行上進行迭代,並以相同的順序訪問鍵: 'foreach($ columns as $ column)echo $ athlete - > {$ column}; – jardis

+1

嗯,我沒有完全使用你的解決方案 - 但它確實引發了一個讓我得到解決方案的思想,所以謝謝你! – Damon

+0

很高興我可以幫助@ damon。 – jardis

回答

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