Laravel Community Tools by Tighten
Laravel Nova icon Nova Packages
F

Five Star Rating

Installation Instructions

  1. composer require kosmoskosmos/nova-rateable-field
  2. php artisan vendor:publish
  3. php artisan migrate

Readme

Laravel Nova Rateable Field Extension

About

This package introduces a Rateable Trait to your application's models on Laravel Nova.

This package introduces a Rateable Trait to your application's models.

Also, it introduces an interactive Field to your Nova backend that makes it possible to instantly rate any property you wish.

With this package it is possible to perform multiple category rating.

For example, you might want to rate the

  • Performance
  • Price
  • Quality

of a product.

However, you can also generate a field that returns the average rating over all three categories combined with the virtual attribute averageRating

Config Settings

Run php artisan vendor:publish --tag=config to set default settings. You will find them in config/rating.php.

You can also set a specific size and padding per field entry via calling the starSize and padding methods.

Credits

Thank you for doing the base work:

https://github.com/willvincent/laravel-rateable https://github.com/craigh411/vue-star-rating

Special credits

Thank you for inspiring us:

https://novapackages.com/packages/nikaia/nova-rating-field

If you need some more documentation about possible options, this might be a good documentation resource.

Installation

  1. composer require kosmoskosmos/rating
  2. php artisan vendor:publish
  3. php artisan migrate

Usage

public function fields(Request $request)
{
    return [
        // ...
        // Define categories for to be rated.
        Rating::make('Pizza Baking Skills', 'pizza_rating')->hideFromIndex(),
        Rating::make('Sushi Rolling Skills',  'sushi_rating')->hideFromIndex(),
        Rating::make('Bread Baking Skills', 'bread_rating')->hideFromIndex(),
        // Show average rating from all three categories above.  
        Rating::make('Overall Skills', 'average_rating')->onlyOnIndex(), 
        // Show average rating from only one category above
        Rating::make('Overall Bread Baking Skills', 'bread_average_rating')->onlyOnIndex(),  
    ];
}

Extend your model like this:

class MyModel extends Model {
    // use the Rateable trait 
    use \KosmosKosmos\Rating\Rateable;
    
    // use the getAttribute() function to inject the Trait's attribute-resolver
    public function getAttribute($key) {
        if ($result = $this->resolveRatingAttribute($key)) {
            return $result;
        }
        return parent::getAttribute($key);
    }   

}

Attribute Naming Conventions

To make best use of this plugin we advise to use the suffix _rating or Rating for your rateable fields.

Screenshots

Reviews

By Andreas Ek on March 5, 2020

Package naming broken and hard to get it to work.

Back to Top
Added 6 years ago
Last updated 2 Years Ago
Version v0.13.1
Composer
kosmoskosmos/rating
GitHub stars 3
Packagist downloads 1,735

Favorites

8 users favorited

Rating

2.00
(out of 5)
★★★★★
★★★★
★★★
★★
1 ratings

Contributors

Brought to you by Tighten

Issues/Feature Requests Stats Package Ideas