symfony 3次登录和注销时

时间:2016-10-13 11:48:29

标签: time symfony-3.1

我在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');
}

1 个答案:

答案 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方法。还有很多关于此的文档。