2016-11-05 48 views
1

EasyAdminBundle使用FOSUserBundle用户操纵器来创建&管理用户。我想捕获创建用户时用于更新后缀数据库的密码。创建用户时,开发人员分析器不显示任何FOSUserBundle事件已被侦听。唯一的EasyAdminBundle事件是easy_admin.post_initialize。该EasyAdminEvents类显示EasyAdminBundle事件POST_INITIALIZE是未定义的类常量

/** @Event("Symfony\Component\EventDispatcher\GenericEvent") */ 
const POST_INITIALIZE = 'easy_admin.post_initialize'; 

但是一个事件监听:

use Symfony\Component\EventDispatcher\GenericEvent; 
... 
    public static function getSubscribedEvents() 
    { 
     return array(
      GenericEvent::POST_INITIALIZE => 'onPostInitialize', 
     ); 
    } 

抛出:

Fatal error: Uncaught Symfony\Component\Debug\Exception\FatalThrowableError: Undefined class constant 'POST_INITIALIZE' ...

我认为答案是使用JavierEguiluz\Bundle\EasyAdminBundle\Event\EasyAdminEvents事件,而不是一个Symfony的GenericEvent。作为

use JavierEguiluz\Bundle\EasyAdminBundle\Event\EasyAdminEvents; 
... 
    public static function getSubscribedEvents() 
    { 
     return array(
      EasyAdminEvents::POST_INITIALIZE => 'onPostInitialize', 
     ); 
    } 
... 
//error occurs on the following line: 
    public function onPostInitialize(EasyAdminEvents $event) 
    { 
     ... 
    } 

但是,这样做给了我这个左右为难:

must be an instance of JavierEguiluz\Bundle\EasyAdminBundle\Event\EasyAdminEvents, instance of Symfony\Component\EventDispatcher\GenericEvent given"

回答

0

所以,简单的答案是改变类型提示,如:

public function onPostInitialize(GenericEvent $event) 
    { 
     ... 
    }