2017-02-17 5 views
0

Я готов создать прослушиватель для входа в систему, чтобы обновить логин и дату последнего входа в базу данных при успешном входе пользователя в систему.Хранилище пользователей Symfony 3 в регистраторе входа в систему

Я получаю данные пользователя успешно, но не может их открыть и не может обновить базу данных

SRC/AppBundle/Listener/SecurityListener.php:

namespace AppBundle\Listener; 
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; 
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; 
#use Doctrine\Bundle\DoctrineBundle\Registry as Doctrine; 
use Doctrine\ORM\EntityManager; 

class SecurityListener 
{ 
    private $tokenStorage; 

    public function __construct(TokenStorage $tokenStorage, EntityManager $doctrine) 
    { 

    } 

    public function onSecurityInteractiveLogin(InteractiveLoginEvent $event) 
    { 
    if ($event->getAuthenticationToken()->isAuthenticated()) { 
     $user = $event->getAuthenticationToken()->getUser(); 
      var_dump($user->id); 
    } 

    /** 
    * Update lastLogin and loginCount for user in database 
    */ 

    $em = $this->getDoctrine()->getManager(); 
     $user = $em->getRepository('AppBundle:User')->find($user->id); 

     if(!$user) 
     { 
      throw $this->createNotFoundException(
       'User could not be found for id '. $user->id 
      ); 
     } 

     $user->setLastLogin(date()); 
     $user->setLoginCount($user->loginCount +1); 
     $em->flush; 


    } 

} 

ошибка:

Error: Cannot access private property AppBundle\Entity\User::$id 

ответ

0

Свойства объектов обычно являются частными, но вы всегда можете использовать методы getter.

Пожалуйста, обновите ваш код похож на этот пример:

throw $this->createNotFoundException(
    'User could not be found for id '. $user->getId() 
); 

Вы также можете попробовать метод, называемый getID(), если мой пример не удается.

+0

У меня есть метод getId() в пользовательском объекте, тo он не работает, я получаю сообщение об ошибке 'Notice: Undefined property: AppBundle \ Entity \ User :: $ getId'. Я предполагаю, что у меня просто небольшое недоразумение здесь или что-то в этом роде ... – Diamonte

+0

Показать код, генерировавший это объявление –

+0

Извините, он работает с $ user-> getId() .... После этого у меня был невидимый персонаж он вернул эту ошибку ... Ваш ответ исправлен, поэтому, чтобы получить нужные данные, мне пришлось использовать метод getter – Diamonte

Смежные вопросы