2013-07-13 28 views
2

看來Symfony 2.1不會自動啓動會話。有沒有辦法讓我自動啓動它們?在Symfony2中自動啓動會話

我有一個應用程序需要用戶的會話ID在幾個動作,但沒有辦法知道哪一個將首先需要它,所以我不能啓動它的需求,我需要它在那裏時,我要求它。

+0

如何升級? –

回答

1

據我瞭解,你需要從已經啓動會議上,一些地方用戶的會話ID,如果沒有會議還沒開始,你想這樣做

在這種情況下可以嘗試:

use Symfony\Component\HttpFoundation\Session\Session; // use sessions 

class yourController extends Controller 
{ 
    public function yourAction() 
    { 

     $session = $this->getRequest()->getSession(); // Get started session 
     if(!$session instanceof Session) 
      $session = new Session(); // if there is no session, start it 

     $value = $session->getId(); // get session id 


     return $this->render('YourSampleBundle:your:your.html.twig',array(
       'session_id' => $value 
     )); 
    } 

} 
+0

我寧願讓symfony爲我啓動它,無論哪個動作被調用。有沒有辦法? – DavidW

+0

@DavidW我認爲實現它的唯一方法是使用'Event'和'EventListener'在所有包中的每個動作之前執行它。一些鏈接:[相關問題](http://stackoverflow.com/questions/10913182/execute-code-before-controllers-action),[sf文檔](http://symfony.com/doc/current/book/ internals.html#events),[其他方法](https://matt.drollette.com/2012/06/calling-a-method-before-every-controller-action-in-symfony2/) – Wilq

1

你可以告訴框架會話配置(在config.xml中定義)自動啓動會話。

但是,這是錯誤的。按需設計會議開始。

<framework:config> 
    <framework:session auto-start="true"/> 
</framework:config> 

我的問題是你爲什麼要初始化會話,除非你使用它?

+0

這不起作用,就像你說的那樣,它已經被棄用了。我不想手動啓動會話。我需要它,因爲我需要用戶的會話ID,因此我可以識別用戶需要的某些操作,但它們都不會存儲在會話中,因此根本無需執行任何操作。 – DavidW