2016-08-17 10 views
1

これは恐らく疑問な質問ですが、私はSymfonyが今のところ数ヶ月しか知っていないので、セッションを設定したことはありません。私はdocumentationで何が起こっているのか理解していますが、新しいセッションをインスタンス化する場所はどこですか?私はeditActionの中でそれをしますか?symfonyセッションを設定するには

私はeditActionを持っているため、誰かが編集をしたらすぐにスーパーバイザに電子メールが送信されますが、セッションごとに1件の注文ごとに1つのメールに制限するにはどうすればよいですか?

私のeditActionの中にこのようなものを追加するだけですか?

$session = new Session(); 
$session->start(); 

// set and get session attributes 
$session->set('order', '...'); 
$session->set('supervisorEmail', '...'); 
$session->set('time', '...'); 

誰かが完全なサンプルで私を助けてくれますか?本当にとても感謝しています。ありがとうございました。

+0

あなたが好きな場所あなたが注入できるセッションサービスがあります。 – mmmm

答えて

4

セッションはカーネルによって自動的に開始されるため、手動でセッションを開始する必要はありません。コントローラには、あなたが要求経由で取得できます。

use Symfony\Component\HttpFoundation\Request;  

public function editAction(Request $request) 
{ 
    $session = $request->getSession(); 
    $session->set('order', '...'); 
    $session->set('supervisorEmail', '...'); 
    $session->set('time', '...'); 
} 

セッションがすでに性質を持っている場合にも、このように、チェックすることができます。

if (false === $session->has('order') { 
    $session->set('order', '...'); 
} 
+0

ありがとう!セッション変数を設定することは既に意味をなさないようになっています。同じセッションで同じオブジェクトを再度編集すると、メールがすでに送信されているかどうかを確認してさらに多くを防ぐ方法はありますか? –

+0

電子メールを初めて送信するときは、セッション変数を登録します。新しいメールを送る前に、この変数が '$ session-> has()'で登録されているかどうかを確認してください。 – VaN

+0

よろしくお願いします。試してみてください。 –

関連する問題