0

私はsymfony 3でかなり新しいので、ユーザーがログインしてログアウトするときに時間を取得する方法..時間のエンティティを作成する必要があることを知っています..そのエンティティにはid、userID startTime、endTime..があり、ユーザーはすべきですこのエンティティとの接続(多対多、その多くのユーザーが多くのログインを持つ可能性があります..)があります....この情報をデータベースに保存したいと思います。Googleで検索しようとしましたが、共通点は見つかりませんでした。

このボタンが押されたときに時間 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');
}
4

1 に答える 1

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()。これに関するドキュメントもたくさんあります。

于 2016-10-14T11:14:37.117 に答える