tadcka / object-rating-bundle
Object rating on Symfony2
Installs: 18
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=5.3.2
- doctrine/orm: >=2.1.0
- symfony/symfony: >=2.2
This package is not auto-updated.
Last update: 2024-11-05 02:30:48 UTC
README
Installation
Step 1: Download TadckaAddressBundle using composer
Add TadckaAddressBundle in your composer.json:
{ "require": { "tadcka/object-rating-bundle": "dev-master" } }
Now tell composer to download the bundle by running the command:
$ php composer.phar update tadcka/object-rating-bundle
Step 2: Enable the bundle
Enable the bundle in the kernel:
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Tadcka\ObjectRatingBundle\TadckaObjectRatingBundle(), ); }
Step 3: Update doctrine schema
$ php app/console doctrine:schema:update --dump-sql
Step 4: Include javascript and css
@TadckaObjectRatingBundle/Resources/public/css/jquery.rating.css @TadckaObjectRatingBundle/Resources/public/js/star-rating/jquery.rating.js @TadckaObjectRatingBundle/Resources/public/js/object-rating.js
Step 5: Create object rating info
Build object raiting info and include to template:
/** * @return \Tadcka\ObjectRatingBundle\Manager\ObjectRatingManager */ private function getObjectRatingManager() { return $this->get('tadcka_object_rating.manager'); } public function exampleAction() { $example = new \Tadcka\ExampleBundle\Entity\Example(); return $this->render('TadckaExampleBundle:Example:example.html.twig', array( 'object_rating_info' => $this->getObjectRatingManager() ->getObjectRatingInfo(Example::OBJECT_TYPE, $example->getId()), )); }
or list:
public function examplesAction() { $ids = array(1, 2); return $this->render('TadckaExampleBundle:Example:examples.html.twig', array( 'objects_rating_info' => $this->getObjectRatingManager() ->getObjectsRatingInfo(Example::OBJECT_TYPE, $ids);, )); }
Step 6: Render object rating in twig template
{% include 'TadckaObjectRatingBundle::show_object_rating.html.twig' with { url: url("exmaple"), objectRatingInfo: object_rating_info } %}
or list:
{% if objects_rating_info[example.getId()] is defined %} {% include 'TadckaObjectRatingBundle::show_object_rating.html.twig' with { url: url("exmaple"), objectRatingInfo: objects_rating_info[example.getId()] } %} {% endif %}
Step 7: Object rating form in twig template
{% render url('tadcka_object_rating', {objectType: 'example', objectId: example.getId() }) %}
Step 8: Add object rating event listener
<?php namespace Tadcka\ExampleBundle\EventListener; use Tadcka\ObjectRatingBundle\Event\ObjectRatingEvent; use Tadcka\ObjectRatingBundle\Services\ObjectRatingService; class ObjectRatingListener { /** * @var ObjectRatingService */ private $objectRatingService; public function setObjectRatingService(ObjectRatingService $objectRatingService) { $this->objectRatingService = $objectRatingService; } public function onExampleRating(ObjectRatingEvent $event) { $objectRating = $event->getObjectRating(); $this->objectRatingService->subscribe($objectRating); } }
Event name is prefix "tadcka_object_rating.event." and object type "example"
<parameter key="tadcka_example.rating_event_listener.class" >Tadcka\ExampleBundle\EventListener\ObjectRatingListener</parameter> <service id="tadcka_example.rating_event_listener" class="%tadcka_example.rating_event_listener.class%"> <call method="setObjectRatingService"> <argument type="service" id="tadcka_object_rating" /> </call> <tag name="kernel.event_listener" event="tadcka_object_rating.event.example" method="onExampleRating"/> </service>