Symfonyフォームの使用時にユーザーがフォームを完成するまでの時間を取得したいと思います。Symfonyでフォームを完成させるためにユーザーが必要とする時間を取得します
$entity = new Entity();
$form = $this->get('form.factory')->create(new EntityType(), $entity);
$begin_time = new \DateTime();
if ($form->handleRequest($request)->isValid() && $form->get('save')->isClicked()) {
$end_time = new \DateTime();
$delta_time = $end_time->diff($begin_time);
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
}
私がフォームを送信すると、私の変数$ BEGIN_DATEと$ END_DATEは、このように私の間隔がnullの場合、等しい:
私の現在のコードは、(私は、エンティティとその関連フォームを持っている)は次のようです。これは、フォームを送信するときにコントローラが再初期化され、結果として$ begin_timeが再度変更されるためですか?
私はまた、フォームが送信されていないときの状態を作成しようとしました:
if(!$form->get('save')->isClicked()) {
$begin_time = new \DateTime();
}
しかし、私はまだ$ END_TIMEに等しいの$ BEGIN_TIMEを得ます。ですから、私の質問は、ユーザーがフォームを完成させるために必要な時間と、Symfonyでこれを行う方法を得ることですか?
ご意見ありがとうございます。
$ begin_time = $ entity-> getDate(); 'エンティティコンストラクタでその日付がどのように初期化されているかを表示できますか? – xDaizu
これはエラーです。実際は$ begin_time = \ DateTime()です。私は質問を編集します。 – modkin
あなたは提出時間に$ begin_timeを設定しています。そのタイムスタンプの値を要求時(ifの前)にフォームに保存し、送信処理(ifの内部)で回復させる必要があります。 – xDaizu