我在symfony 3中非常新,所以我可以在用户登录和退出时获得时间..我知道我应该为时间创建实体..该实体将具有id,userID startTime,endTime ..和用户应该有一个连接(很多很多,很多用户可以有很多登录..)与这个实体....我想在数据库中存储这些信息。我试图在谷歌搜索,但我没有发现任何共同点。
我想在按下此按钮时激活时间startTime 标志 在 和控制器中的代码
@Route("/login", name="authentication_login")
public function loginActionAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('AppBundle:uzduotis:login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
然后是endTime
/**
* @Route("/logout", name="logout")
* @Method({"GET"})
*/
public function logoutAction(Request $request)
{
$session = $this->$request->getSession();
$session = $this->get('session')->clear();
return $this->render('AppBundle:uzduotis:login.html.twig');
}
答案 0 :(得分:0)
对于这个答案,我假设您将用户存储在数据库中。如果没有,请说明你是怎么做的。
首先,请查看有关如何将实体相互连接的学说文档。在你的情况下这应该有所帮助: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-bidirectional
Symfony文档中还提供了关于此主题的非常好的教程:http://symfony.com/doc/current/doctrine/associations.html
在控制器中,您可以通过执行$user = $this->get('security.token_storage')->getToken()->getUser();
来获取当前登录的用户。这将返回您可以立即修改的用户的数据库实体。例如。通过向时间表添加新记录(示例代码):
$time = new TimeLog();
$time->setUser($user);
$time->setType('login');
$time->setTimestamp(time());
如果保存不起作用,请尝试使用$this->get('doctrine')->getManager()
的persist和flush方法。还有很多关于此的文档。