最新の活動を追跡するために、サービス内のユーザにアクセスしようとしています。しかし、それはエラーがスローされます。symfony 2.8:サービス(FosUserBundle)で現在のユーザを取得できません
Error: Call to a member function getUser() on a non-object
しかし、もし私のvar_dumpとダイ()ユーザーオブジェクト私が情報を見ることができます。
アイデア?
ActivityListener
<?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 }
可能な複製http://stackoverflow.com/questions/19144505/symfony2-get-userid-on-kernel-controller-event-listener –