You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade中根据薪资排名为DataTables表格行设置不同文字颜色

实现方案

方案1:直接复用现有预设样式(无需修改CSS)

你已经预设好了对应颜色的样式类,直接在Blade循环中通过$loop->iteration(当前循环次数,从1开始,正好对应排名)判断区间,给每个td加上对应类即可,修改后的渲染代码如下:

@foreach($jamisoni as $pay)
    @php
        $rank = $loop->iteration;
        if ($rank <= 5) {
            $class = 'tg-xdmp';
        } elseif ($rank <= 10) {
            $class = 'tg-i99s';
        } elseif ($rank <= 15) {
            $class = 'tg-viqs';
        } else {
            $class = 'tg-0lax';
        }
    @endphp
    <tr>
        <td class="{{ $class }}">{{ $loop->iteration }}</td>
        <td class="{{ $class }}">{{ $pay->name }}</td>
        <td class="{{ $class }}">{{ $pay->amount }}</td>
    </tr>
@endforeach

方案2:简化代码(推荐,少量修改CSS)

可以新增几个tr层级的样式,不用重复给每个td加类,代码更简洁:
首先在你的style标签中新增如下样式:

.tg .rank-green td { color: #0a790a; text-align: left; vertical-align: top; }
.tg .rank-yellow td { color: #ffcb2f; text-align: left; vertical-align: top; }
.tg .rank-red td { color: #fe0000; text-align: left; vertical-align: top; }
.tg .rank-default td { color: inherit; text-align: left; vertical-align: top; }

然后Blade代码修改为:

@foreach($jamisoni as $pay)
    @php
        $rank = $loop->iteration;
        $trClass = match(true) {
            $rank <= 5 => 'rank-green',
            $rank <= 10 => 'rank-yellow',
            $rank <= 15 => 'rank-red',
            default => 'rank-default'
        };
    @endphp
    <tr class="{{ $trClass }}">
        <td>{{ $loop->iteration }}</td>
        <td>{{ $pay->name }}</td>
        <td>{{ $pay->amount }}</td>
    </tr>
@endforeach

注:如果你的PHP版本低于8.0不支持match语法,把match部分替换为方案1的if else判断即可。

如果你后续是用DataTables的JS端渲染数据,也可以通过DataTables的rowCallback配置项实现行样式的动态绑定,当前服务端Blade渲染场景下上述两种方案都可以直接运行。

内容的提问来源于stack exchange,提问作者Hayrulla Melibayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:24:03