← المصادر المفتوحة

Rating for Filament

Laravel

مكونات Filament لحزمة التقييم — إدخال النجوم، عمود المتوسط، وإدارة المراجعات.

1 تحميل 0 نجمة أحدث إصدار v1.0.0

التثبيت

composer require ghanem/rating-filament

Latest Stable Version License Tests

Laravel Rating for Filament

Filament 4 & 5 components for ghanem/rating (Packagist) — a star input field, a sortable average-rating table column, an infolist entry, and a relation manager for moderating reviews.

This package is admin-panel only. Ratings themselves — the traits, aggregates, scopes, events and validation — live in ghanem/rating, which is required automatically. Read its README first if you have not set up the Ratingable and CanRate traits yet.

Installation

composer require ghanem/rating-filament

This pulls in ghanem/rating ^2.1. If you have not already published its migration:

php artisan vendor:publish --provider="Ghanem\Rating\RatingServiceProvider"
php artisan migrate

Table column

Show a sortable average rating on a resource's table. The modifyQueryUsing line is required — it selects the ratings_avg_rating alias the column reads, which is what keeps the table to one query instead of one per row.

use Ghanem\RatingFilament\Tables\Columns\RatingColumn;

public static function table(Table $table): Table
{
    return $table
        ->modifyQueryUsing(fn (Builder $query) => $query->withAvgRating()->withCountRatings())
        ->columns([
            TextColumn::make('title'),
            RatingColumn::make()->showCount(),
        ]);
}

Scoping to a rating type happens in the query, not on the column:

->modifyQueryUsing(fn (Builder $query) => $query->withAvgRating('food'))

Form field

use Ghanem\RatingFilament\Forms\Components\RatingInput;

RatingInput::make('rating')
    ->stars(5)
    ->allowHalf()
    ->starColor('#f59e0b')
    ->required();

The star count defaults to config('rating.max'), and the field attaches min/max validation rules from the same config so an out-of-range value produces a field error instead of an InvalidRatingException.

allowHalf() lets the field store and render half-point values (2.5, 3.5, ...). Clicking the left half of a star selects the half value, and the star is drawn half-filled to match.

Infolist entry

use Ghanem\RatingFilament\Infolists\Components\RatingEntry;

RatingEntry::make('rating')->showValue();

Relation manager

use Ghanem\RatingFilament\Resources\RelationManagers\RatingsRelationManager;

class PostRatingsRelationManager extends RatingsRelationManager {}

Then register it on the resource:

public static function getRelations(): array
{
    return [PostRatingsRelationManager::class];
}

It lists the ratings a record has received, with edit and delete actions for moderation. There is no create action by default, because the correct author for an admin-created rating is application-specific.

Customising the markup

php artisan vendor:publish --tag=rating-filament-views

Known limitation

Ratingable::ratings() and CanRate::ratings() share a method name, so a model cannot use both traits without resolving the collision with insteadof. This relation manager always means ratings received.

Related packages

Sponsor

Become a Sponsor

المزيد في نفس المنظومة