2016-10-13 9 views
0

symfony 3でかなり新しくなっているので、ユーザーがログインしてログアウトするときにどうすればいいのですか...私は時間のエンティティを作成する必要があります。 id、userID startTime、endTime ..があり、ユーザーはこのエンティティとの接続(多くの場合、多くのユーザーがたくさんのログインを持つことができます)を持っている必要があります。この情報をデータベースに保存したいのですが。私はGoogleで検索しようとしましたが、共通点は何も見つかりませんでした。私は、コントローラsymfony 3回ログインしてログアウトするとき

@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, 
     )); 
    } 

にこのボタンを に ログイン を押された時間のstartTimeとコードをアクティブにしたいと思います

は、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

のために私はあなたが保存仮定しますデータベース内のユーザーそうでない場合は、どうやって行っているかを示してください。

まず、エンティティ同士の接続方法に関するドクトリンのドキュメントをご覧ください。あなたのケースでは、これは役立つはず: 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()の存続とフラッシュ方法としてみてください。これについても多くのドキュメントがあります。

関連する問題