Версия: Symfony 2.2
Я пытаюсь добавить роль по умолчанию, когда пользователь регистрируется на моем сайте. Я использую FOSUserBundle и вижу, что при регистрации пользователя поле роли в базе данных становится пустым. Я начинаю с этой огромной связки, и это не очень легко понять. Поэтому я прочитал всю документацию и не знаю, что делать.
Сейчас я создаю событие, чтобы динамически добавлять эту роль, но оно не работает (у меня нет ошибки, но моя база данных все еще пуста). Я даже не уверен, что это хороший способ сделать это?
Мое событие:
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FormEvent;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class AddDefaultRoleListener implements EventSubscriberInterface {
private $container;
public function __construct(Container $container)
{
$this->container = $container;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onAddDefaultRoleSuccess',
);
}
public function onAddDefaultRoleSuccess(FormEvent $event)
{
$doctrine = $this->container->get('doctrine');
$em = $doctrine->getManager();
$user = $event->getForm()->getData();
$user->addRole('ROLE_USER');
//$user->setRoles(array('ROLE_USER'));
$em->persist($user);
}
}
Как видите, я создаю простое событие, которое прослушивает REGISTRATION_SUCCESS, но, похоже, ничего не работает. Это моя первая попытка с событиями и услугами. Так что если у кого-то есть совет, я его приму :)