This Symfony bundle provides integration of a star rating system.
- PHP 7.2+
- MySQL 5.7.20+
- Symfony 4.3+
Install bundle with Composer
dependency manager first by running the command:
$ composer req oachoor/rating-bundle
oa_rating:
resource: '@RatingBundle/Controller'
type: annotation
Entities doesn't fully meet your requirements?, then you can create yours based on Rating and Vote.
doctrine:
orm:
resolve_target_entities:
RatingBundle\Model\AbstractVote: RatingBundle\Entity\Vote or AcmeRatingBundle\Entity\Vote
RatingBundle\Model\AbstractRating: RatingBundle\Entity\Rating or AcmeRatingBundle\Entity\Rating
Symfony\Component\Security\Core\User\UserInterface: RatingBundle\Entity\User or AcmeRatingBundle\Entity\User
Make sure you have registered the Bundle that holds the Entities as following:
doctrine:
orm:
entity_managers:
default:
mappings:
RatingBundle: ~ or AcmeRatingBundle: ~
$ bin/console doctrine:schema:update --force --no-debug
There are two strategies for rating, based on IP addresses or cookies. (both? feel free to contribute)
oa_rating:
strategy: cookie (default "ip")
cookie_name: your_custom_name
cookie_lifetime: '+1 year'
Templates can be overridden in the <your-project>/templates/bundles/RatingBundle/
directory, the new templates must use the same name and path (relative to RatingBundle/Resources/views/
) as the original templates.
To override the Resources/views/rating/view.html.twig
template, create this template: <your-project>/templates/bundles/RatingBundle/rating/view.html.twig
To see rating result for a Content (read-only mode), use the following twig code:
{{ render( controller( 'RatingBundle:Rating:result', {'contentId': yourContentId} ) ) }}
Rating is based on Content, to enable voting for a Content use the following twig code:
{{ render( controller( 'RatingBundle:Rating:vote', {'contentId': yourContentId} ) ) }}
A minimal Template that contains rating-call, javascripts and stylesheets.
- Make User dependencies optional.
- Write some Unit Tests.
- Add Fixtures.