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

Laravel中如何基于Testimonials表stars字段展示Font Awesome星级

实现思路与代码示例

嘿,这个需求我经常遇到,给你几个实用的实现思路,都是在Blade里能快速落地的,和Font Awesome搭配起来很顺畅:

方法一:Blade模板内直接循环(最简单直接)

这种方法不用改模型,直接在模板里处理逻辑,适合快速实现。

首先确保你已经在项目里引入了Font Awesome(不管是CDN还是本地文件),然后根据需求选择两种展示方式:

方式1:只显示对应数量的实心星星

{{-- 遍历1到stars的数值,输出对应数量的实心星 --}}
@for ($i = 1; $i <= $testimonial->stars; $i++)
    <i class="fa fa-star text-warning"></i>
@endfor

方式2:显示满5颗星(对应数量实心,其余空心,更符合常见UI)

如果是Font Awesome 5及以上版本,注意类名是fas fa-star(实心)和far fa-star(空心);旧版本用fa fa-star和fa fa-star-o:

{{-- 遍历1到5,根据stars值判断显示实心还是空心星 --}}
@for ($i = 1; $i <= 5; $i++)
    <i class="fas {{ $i <= $testimonial->stars ? 'fa-star text-warning' : 'fa-star text-muted' }}"></i>
@endfor

方法二:模型访问器(模板更干净,逻辑集中)

把生成星星HTML的逻辑放到Testimonial模型里,模板只需要调用一个属性即可,代码更整洁。

在你的App\Models\Testimonial模型里添加一个访问器:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Testimonial extends Model
{
    // 定义访问器,自动生成星星的HTML代码
    public function getStarsHtmlAttribute()
    {
        $html = '';
        
        // 添加实心星星
        for ($i = 1; $i <= $this->stars; $i++) {
            $html .= '<i class="fas fa-star text-warning"></i>';
        }
        
        // 可选:添加空心星星补全5颗(如果需要的话)
        // for ($i = $this->stars + 1; $i <= 5; $i++) {
        //     $html .= '<i class="far fa-star text-muted"></i>';
        // }
        
        return $html;
    }
}

然后在Blade模板里直接调用(注意用{!! !!}输出HTML,避免被转义):

{!! $testimonial->stars_html !!}

方法三:Blade组件(复用性最强,适合多页面使用)

如果你的项目里多个地方都需要展示星级评分,用Blade组件是最好的选择,后期修改样式或逻辑只需要改组件文件。

  1. 创建组件文件:resources/views/components/star-rating.blade.php
{{-- 接收两个参数:rating是当前评分,max是最大星级(默认5) --}}
@props(['rating' => 0, 'max' => 5])

@for ($i = 1; $i <= $max; $i++)
    <i class="fas {{ $i <= $rating ? 'fa-star text-warning' : 'fa-star text-muted' }}"></i>
@endfor
  1. 在Blade模板里调用组件:
{{-- 传入testimonial的stars值作为rating参数 --}}
<x-star-rating :rating="$testimonial->stars" />

注意事项

  • 确保Font Awesome已正确引入:比如在布局文件里添加CDN链接(以FA 5为例):
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
  • 星星的颜色可以通过修改text-warning这类CSS类来调整,比如用自定义颜色类或者Tailwind的颜色类(如text-yellow-500)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:36:07