在实体生命周期回调中访问当前用户



在我的学说实体中,我有一个生命周期回调,需要访问当前登录的用户(类似于 TokenStorage (。

我是否可以坚持生命周期回调,还是必须切换到注入令牌存储的事件侦听器?

/** @ORMHasLifecycleCallbacks() */
class Report {
    /** @ORMPrePersist */
    public function onPrePersist(LifecycleEventArgs $args)
    {
        $this->updatedAt = new DateTime();
        $this->lastUpdatedBy = ???->getToken()->getUser(); // <-----
    }
}
这样做

的好方法是使用 doctrine 事件侦听器:

文件服务.yml

    services:
         my_report_listener :
          class : AppEventListenerReportListner
          arguments: ['@security.token_storage']
          tags:
             - { name: doctrine.event_listener, event: prePersist }

您的事件侦听器类:

    class ReportListner {
      private $tokenStorage;
      public function __construct(TokenStorageInterface $tokenStorage)
      {
         $this->tokenStorage= $tokenStorage;
      }
      public function prePersist(LifecycleEventArgs $args)
      {
        $entity = $args->getObject();
        if($entity instanceof Report){
         $current_user = $this->tokenStorage->getToken()->getUser();
        }
   }
}

相关内容

  • 没有找到相关文章

最新更新