Ce bundle est une "amélioration" du tutoriel de grafikart
$ composer require vectorxhd/trophy-bundle
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// ...
new VectorXHD\TrophyBundle\VectorXHDTrophyBundle(),
];
}
# app/config/config.yml
vectorxhd_trophy:
user_class: AppBundle\Entity\User
Il faut aussi implémenter UserTrophyInterface
sur votre entité user_class
$ php bin/console doctrine:schema:update --force
Voici l'exemple d'un badge utiliser pour les commentaire
$badge = new Badge();
$badge->setName("Premier badge");
$badge->setActionName('comment');
$badge->setActionCount(1);
// Recuperer le manager
/** @var TrophyManager $trophyManager */
$trophyManager = $this->get('vectorxhd_trophy.manager.trophy');
// Debloquage d'un trophée
$trophyManager->checkAndUnlock($user, 'comment', $commentsUserCount);
La méthode checkAndUnlock
a besoin de
- L'instance de l'utilisateur (
$this->getUser();
) - Le nom de l'action
- Le nombre de fois que l'action c'est produite
Dans cette exemple $commentsUserCount
correspond qu nombre de commentaire poser par l'utilisateur.
Il y a deux événement dispatch
TrophyUnlockedEvent::PRE_CREATE
TrophyUnlockedEvent::POST_CREATE
Cette événement dispose de plusieurs getter
getBadgeUnlock
getBadge
getUser
- Ajouter des test
Ajouter le bundle sur packagist- Tester sur plusieurs version de symfony