Я готов создать прослушиватель для входа в систему, чтобы обновить логин и дату последнего входа в базу данных при успешном входе пользователя в систему.Хранилище пользователей 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
У меня есть метод getId() в пользовательском объекте, тo он не работает, я получаю сообщение об ошибке 'Notice: Undefined property: AppBundle \ Entity \ User :: $ getId'. Я предполагаю, что у меня просто небольшое недоразумение здесь или что-то в этом роде ... – Diamonte
Показать код, генерировавший это объявление –
Извините, он работает с $ user-> getId() .... После этого у меня был невидимый персонаж он вернул эту ошибку ... Ваш ответ исправлен, поэтому, чтобы получить нужные данные, мне пришлось использовать метод getter – Diamonte