TrophyBundle
Ce bundle est une "amélioration" du tutoriel de grafikart, (*1)
Installation
$ composer require vectorxhd/trophy-bundle
Configuration
<?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
, (*2)
Mettre a jour la base de donnée
$ php bin/console doctrine:schema:update --force
Ajouter un badge
Voici l'exemple d'un badge utiliser pour les commentaire, (*3)
$badge = new Badge();
$badge->setName("Premier badge");
$badge->setActionName('comment');
$badge->setActionCount(1);
Exemple d'utilisation
// 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, (*4)
- 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., (*5)
ĂvĂ©nement
Il y a deux événement dispatch, (*6)
TrophyUnlockedEvent::PRE_CREATE
TrophyUnlockedEvent::POST_CREATE
Cette événement dispose de plusieurs getter
- getBadgeUnlock
- getBadge
- getUser
, (*7)
Todo
- Ajouter des test
- ~~Ajouter le bundle sur packagist~~
- Tester sur plusieurs version de symfony