2017-02-16 41 views
0

我有一個報告頁面,它循環訪問一個集合,並在通用引導程序模板表中顯示數據 - 它顯示有關用戶的數據,一個用戶可以有多行桌子。我通過用戶ID對行進行分組,並且我想基本上根據用戶標識對錶格行進行分條(不僅僅是交替行)。因此,例如,我可能會顯示4行,用戶ID = 5,背景爲白色,然後顯示2行,用戶ID = 6,背景爲灰色。我只是在直接的php中使用局部變量,但是在刀片模板中是否有一種優雅/乾淨的方式來執行此操作?當變量值在循環中不同時,Laravel Blade會更改行顏色

@foreach($payments->getDetails() AS $k=>$detail) 
<tr> 
    <td>{{ $detail->payment->userid }}</td> 
    <td>${{ $detail->payment->amount }}</td> 
    <td>{{ $detail->payment->status }}</td> 
</tr> 
@endforeach 

在此示例中,$ payments是$ paymentsDetails對象的集合。因此,基於$ detail-> payment-> userid值,我想確定類或背景顏色。

謝謝你在這方面的任何幫助。

+0

您可以在用戶表中添加一列,爲每個用戶分配一個唯一的顏色代碼並在循環中調用它,只需確保綁定在付款模型上添加belongsTo關係以訪問用戶模型 – Adam

回答

0

我通過www.laracasts.com從用戶@Cronix得到了解決這個:

我會按照您原先的想法來做,只需使用 @ php/@ endphp blade指令來確定用戶標識在每次循環迭代過程中是否更改了 ,並且它確實更改了顏色。

@php 
$lastid = null; 
$rowclass = 'grey'; 
@endphp 

@foreach($payments->getDetails() AS $k=>$detail) 
@php 
//if userid changed from last iteration, store new userid and change color 
if ($lastid !== $detail->payment->userid) 
{ 
    $lastid = $detail->payment->userid; 
    if ($rowclass == 'grey') $rowclass = 'white'; 
    else $rowclass = 'grey'; 
} 
@endphp 
<tr class="{{ $rowclass }}"> 
    <td>{{ $detail->payment->userid }}</td> 
    <td>${{ $detail->payment->amount }}</td> 
    <td>{{ $detail->payment->status }}</td> 
</tr> 
@endforeach 

如果有人在那裏有關於如何解決它更優雅的葉片爲重點的想法,我很樂意聽到它。

0

只是一個想法......這是假設行由用戶ID下令自然(它不會在你的榜樣,否則工作反正...)...因此,這裏的想法...

如果用戶ID是奇數,然後給它一個顏色,如果是偶數,給它替代顏色...這將工作...排序... ...

@foreach($payments->getDetails() AS $k=>$detail) 
<tr> 
    <td class="{{$detail->payment->userid % 2 == 0 ? 'evenColor':'oddColor'">{{ $detail->payment->userid }}</td> 
    <td class="{{$detail->payment->userid % 2 == 0 ? 'evenColor':'oddColor'">{{ $detail->payment->amount }}</td> 
    <td class="{{$detail->payment->userid % 2 == 0 ? 'evenColor':'oddColor'">{{ $detail->payment->status }}</td> 
</tr> 
@endforeach 

像這樣的事情也將工作.. 。不知道我喜歡它

@foreach($payments->getDetails() AS $k=>$detail) 
    @if($detail->payment->userid % 2 == 0) 
     <tr> 
      <td class="evencolor">{{ $detail->payment->userid }}</td> 
      <td class="evencolor">>${{ $detail->payment->amount }}</td> 
      <td class="evencolor">{{ $detail->payment->status }}</td> 
     </tr> 
    @else 
     <tr> 
      <td class="oddcolor">{{ $detail->payment->userid }}</td> 
      <td class="oddcolor">${{ $detail->payment->amount }}</td> 
      <td class="oddcolor">{{ $detail->payment->status }}</td> 
     </tr> 
    @endif 
@endforeach 

反正...只是一個可能的方向...別人可能有一個更優雅的想法...

+0

hey @Serge - 問題在於它可能是一個隨機的用戶ID列表,所以你可能會有一些可能性或平均數,所以這個解決方案無濟於事。 – Xmy

+0

如果用戶隨機排列,爲什麼還要打擾呢?你將最終得到一堆彩色線條...... – Serge

+0

對於單個用戶將會有多條記錄,記錄將按照用戶ID進行分組,但是按另一個值進行排序,因此爲了便於閱讀,我希望通過用戶標識來分割它,但我無法保證用戶標識的順序。 – Xmy