脚本宝典收集整理的这篇文章主要介绍了php – 在FOSUserBundle中,如何在REGISTRATION_COMPLETED事件上初始设置用户角色?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的NewUserGroupSet事件监听器:
<?PHP namespace Tsk\TstBundle\EventListener; use Doctrine\ODM\MongoDB\DocumentManager; use fos\UserBundle\Doctrine\UserManager; use FOS\UserBundle\Event\FilterUserResponseEvent; use FOS\UserBundle\FOSUserevents; use Symfony\component\EventDispatcher\EventSubscriberInterface; class NewUserGroupSet implements EventSubscriberInterface { PRotected $um; protected $dm; public function __construct(UserManager $um,DocumentManager $dm) { $this->um = $um; $this->dm = $dm; } public static function getSubscribedEvents() { return array( FOSUserEvents::REGISTRATION_completeD => "onRegistrationSuccess",); } public function onRegistrationSuccess(FilterUserResponseEvent $event) { $user = $event->getUser(); $user->setRoles(array('ROLE_USER')); $this->um->updateUser($user); $this->dm->flush(); } } ?>
并注册为服务如下:
parameters: tsk_user.group_set.class: Tsk\TstBundle\EventListener\NewUserGroupSet services: tsk_user.group_set: class: %tsk_user.group_set.class% arguments: [@fos_user.user_manager,@doctrine.odm.mongodb.document_manager] tags: - { name: kernel.event_subscriber }
但是当我注册一个新用户时,什么也没发生.没有任何角色被设置.
任何帮助,将不胜感激.
public function setRoles(array $roles) { $this->roles = array(); foreach ($roles as $role) { $this->addRole($role); } return $this; }
尝试使用addRole()作为单个角色
public function onRegistrationSuccess(FilterUserResponseEvent $event) { $user = $event->getUser(); $user->addRole('ROLE_USER'); $this->um->updateUser($user); $this->dm->flush(); }
以上是脚本宝典为你收集整理的php – 在FOSUserBundle中,如何在REGISTRATION_COMPLETED事件上初始设置用户角色?全部内容,希望文章能够帮你解决php – 在FOSUserBundle中,如何在REGISTRATION_COMPLETED事件上初始设置用户角色?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。