【发布时间】:2016-04-18 08:36:53
【问题描述】:
我正在尝试访问服务中的用户以跟踪最新活动。但是它会引发错误:
错误:在非对象上调用成员函数 getUser()
但如果我 var_dump 和 die() 用户对象 我可以看到信息。
有什么想法吗?
活动监听器
<?php
namespace AppBundle\EventListener;
use AppBundle\Entity\User;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class ActivityListener
{
protected $tokenStorage;
protected $em;
public function __construct(TokenStorage $tokenStorage, \Doctrine\ORM\EntityManager $em)
{
$this->tokenStorage = $tokenStorage;
$this->em = $em;
}
public function onCoreController(FilterControllerEvent $event)
{
$user = $this->tokenStorage->getToken()->getUser();
if($user instanceof User)
{
$user->setLastActive(new \DateTime());
$this->em->persist($user);
$this->em->flush($user);
}
}
}
services.yml
app.activityListener:class: AppBundle\EventListener\ActivityListener
arguments: [ @security.token_storage, @doctrine.orm.entity_manager ]
tags: - { name: kernel.event_listener, event: kernel.controller, method: onCoreController }
【问题讨论】: