使用Laravel,我想循环遍历一系列成绩(从'0'到'12'),如果在我的中间/数据透视表中找到成绩,我希望附加该特定匹配项的类'主动'。
(例如,在我的中间表中,我将其设置为有两个活跃的 grade_id s:6和7。)
我尝试了for循环:
@for ($x=0; $x<=12; $x++)
@if ($x === 0)
<button class="circular small ui icon button">K</button>
@else
<button class="circular small ui icon button">{{ $x }}</button>
@endif
@endfor
这很好地循环从0(K)到12的成绩就好了。但是,如何让激活在数据库中匹配的项目?我需要以某种方式添加foreach输出$ grade作为$ grade(或类似)并检查$ x = $ grade。
但如果我尝试这样的想法:
@for ($x=0; $x<=12; $x++)
@if ($x === 0)
<button class="circular small ui icon button">K</button>
@else
@foreach ($grades as $key=>$value)
<button class="circular small ui icon button">{{ $value }}</button>
@endforeach
@endif
@endfor
逻辑通过输出K,6,7来解决问题,其中6,7重复12次。是的,这就是我有效告诉它的事情。
这样做显然不起作用,因为我只得到一个等于我的数据库中匹配的行数的结果:
<?php $x = 0; ?>
@foreach ($grades as $grade)
@if ($x === 0)
<button class="circular small ui icon button">K</button>
@else
<button class="circular small ui icon button">{{ $x }}</button>
@endif
<?php $x++; ?>
@endforeach
那么,在检查每个等级是否与中间数据库中设置的值(grade_id)匹配时,如何输出每个/所有等级(从0到12)?我猜这是一个非常简单的任务,但我想不出可以调用控制结构,我可以谷歌或搜索SO ...
[请注意,我没有包含表格结构,因为我认为这与问题无关。]
答案 0 :(得分:1)
试试这个:
@for ($x=0; $x<=12; $x++)
@if ($x === 0)
<button class="circular small ui icon button">K</button>
@else
<button class="circular small ui icon button {{ in_array($x, $grades)?' selected' : ''}}">{{ $x }}</button>
@endif
@endfor
针对刀片表示法进行了修改
答案 1 :(得分:0)
将成绩放在一个单独的数组中,并使用php in_array
检查此成绩是否需要active
,例如:
@for ($x=0; $x<=12; $x++)
@if ($x === 0)
<button class="circular small ui icon button">K</button>
@else
@if in_array($x, $grades)
<button class="circular small ui icon button active">{{ $value }}</button>
@else
@endif
@endif
@endfor