我有一个循环通过集合的报告页面,并在通用引导程序模板表中显示数据 - 它显示有关用户的数据,一个用户可以在表中有多行。我按用户ID对行进行分组,我希望基本上根据用户ID(不仅仅是交替的行)对表行进行条带化。因此,例如,我可能会显示4行,用户ID = 5,带有白色背景,然后2行,用户ID = 6,带有灰色背景。我只是在直接的php中使用局部变量,但是在刀片模板中是否有一种优雅/干净的方法呢?
@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-&gt; payment-&gt; userid值,我想确定类或背景颜色。
感谢您的帮助。
答案 0 :(得分: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
无论如何......只是一个可能的方向......别人可能有一个更优雅的想法...
答案 1 :(得分: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
如果那里的任何人都有更优雅的专注于如何解决它的想法,我很乐意听到它。
答案 2 :(得分:0)
伙计们,上面的方法对我来说失败了,以防万一其他人需要这样做:我在laravel 5.4和php 5.6中使用了im ==>
@php
if ( $post->dbdata == 'approved'):
$color = 'green';
elseif ( $post->dbdata == 'Pending'):
$color = 'yellow';
elseif ( $post->dbdata == 'rejected'):
$color = 'red';
else:
$color = 'black';
endif;
@endphp
<tr style="background-color: {{$color}}">
<td>
<h6>{{ $post->dbdata }}</h6>
</td>
</tr>