我的刀片视图中有一张表,它显示如下(我只把tr和td部分拿出来):
@foreach ($event->offers as $offer)
<tr>
<td class="text-center"><a href="/offers/{{ $offer->id }}">{{ $offer->user->company }}</a></td>
<td class="text-center">{{ $offer->created_at }}</td>
<td class="text-center"><span class="btn btn-default">{{ $offer->netto }} €</span></td>
</tr>
@endforeach
我想要的是相应地更改bootstrap btn类的最小值和最大值,但仅限于这两个值!
我找到了一个原生的php函数min()和max()
http://php.net/manual/en/function.min.php
但我不知道如何使用blade和foreach循环来实现它。
答案 0 :(得分:1)
第一种方式是sortBy()
收集并使用the loop variable。它只显示最小值和最大值一次:
@foreach ($event->offers->sortBy('netto') as $offer)
....
<td class="text-center"><span class="btn btn-default {{ $loop->first ? 'minClass' : '' }}{{ $loop->last ? 'maxClass' : '' }}">{{ $offer->netto }} €</span>
@endforeach
第二种方式有点难看,但即使存在多个相同的最小值或最大值,它也会显示最小和最大一次。使用min()
和max()
助手:
<?php $min = $event->offers->min('netto');
$max = $event->offers->max('netto');
$minShown = false;
$maxShown = false; ?>
@foreach ($event->offers as $offer)
....
{{-- Show min class only once --}}
<?php $minClass = ''; $maxCalss = ''; ?>
@if (!$minShown && $offer->netto == $min)
<?php $minShown = true; $class = 'minClass' ?>
@endif
{{-- Show max class only once --}}
@if (!$maxShown && $offer->netto == $max)
<?php $maxShown = true; $class = 'maxClass' ?>
@endif
<span class="btn btn-default {{ $class }}">{{ $offer->netto }} €</span>
@endforeach
答案 1 :(得分:0)
选项1
如果条件满足,则添加额外的类(使用三元if):
{{ $offer->netto == $event->offers->max('netto') ? 'ADDITIONAL CLASS' : '' }}
像这样插入:
<td class="text-center"><span class="btn btn-default {{ $offer->netto == $event->offers->max('netto') ? 'ADDITIONAL CLASS' : '' }}">{{ $offer->netto }} €</span></td>
它不是最优化的代码片段,因为它将在每次迭代时执行->max()。但是你可以从这里开始优化(在变量等中保存最大值......)。 ->min()
可以做同样的事情选项2:
你有可能需要这样的东西。这假设您将根据netto:
的最大/最小值更改“btn-default”类<td class="text-center">
<span
@if($offer->netto == $event->offers->max('netto'))
class="btn btn-max">
@elseif($offer->netto == $event->offers->min('netto'))
class="btn btn-min">
@else
class="btn btn-default">
@endif
{{ $offer->netto }} €
</span>
</td>