1. Go to this page and download the library: Download yaso/entity-rating-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yaso / entity-rating-bundle example snippets
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Yaso\Bundle\EntityRatingBundle\YasoEntityRatingBundle(),
// ...
);
}
// src/Acme/AppBundle/Entity/EntityRate.php
namespace Acme\AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Yaso\Bundle\EntityRatingBundle\Entity\EntityRate as BaseEntityRate;
/**
* EntityRate
* @ORM\Table(name="entity_rate")
* @ORM\Entity(repositoryClass="Yaso\Bundle\EntityRatingBundle\Repository\EntityRateRepository")
*/
class EntityRate extends BaseEntityRate
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @return mixed
*/
public function getId(): int
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
}
# src/Acme/AppBundle/Entity/Post.php
use Yaso\Bundle\EntityRatingBundle\Annotation\Rated;
...
/**
* Post
* @ORM\Table(name="post")
* ...
* @Rated(min=1, max=5, step=1)
* ...
*/
/**
* @var User
* @ORM\ManyToOne(targetEntity="Acme\AppBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
/**
* @return User
*/
public function getUser(): User
{
return $this->user;
}
/**
* @param User $user
*/
public function setUser(User $user)
{
$this->user = $user;
}
namespace Acme\AppBundle\Manager;
use Yaso\Bundle\EntityRatingBundle\Entity\EntityRateInterface;
use Yaso\Bundle\EntityRatingBundle\Factory\EntityRatingFormFactory;
use Yaso\Bundle\EntityRatingBundle\Manager\EntityRatingManager as BaseEntityRatingManager;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\ORM\EntityManager;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
class EntityRatingManager extends BaseEntityRatingManager
{
private $user = null;
public function __construct(
AnnotationReader $annotationReader,
EntityRatingFormFactory $formFactory,
EventDispatcherInterface $eventDispatcher,
EntityManager $entityManager,
$entityRatingClass,
$mapTypeToClass,
$rateByIpLimitation,
TokenStorage $tokenStorage
){
parent::__construct($annotationReader, $formFactory, $eventDispatcher, $entityManager, $entityRatingClass, $mapTypeToClass, $rateByIpLimitation);
/** @var TokenInterface $token */
$token = $tokenStorage->getToken();
if ($token !== null && is_object($token->getUser())) {
$this->user = $token->getUser();
}
}
public function getUserCurrentRate($entityId, $entityType, $ignoreFields = [])
{
if ($this->user) {
return $this->entityRateRepository->findOneBy(
[
'entityId' => $entityId,
'entityType' => $entityType,
'user' => $this->user,
]
);
} else {
return parent::getUserCurrentRate($entityId, $entityType, ['user']);
}
}
/**
* @param \Acme\AppBundle\Entity\EntityRate|EntityRateInterface $rate
* @param $entityId
* @param $entityType
* @param $rateValue
*
* @return \Acme\AppBundle\Entity\EntityRate|EntityRateInterface
*/
protected function hydrateEntity(EntityRateInterface $rate, $entityId, $entityType, $rateValue)
{
if ($this->user) {
$rate->setUser($this->user);
}
parent::hydrateEntity($rate, $entityId, $entityType, $rateValue);
return $rate;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.