2013-01-14 23 views
0

在Symfony2中的每個用戶創建的控制器延伸控制器類如以下所示,關於Symfony2的會話

class MyController extends Controller { 

從而功能相關的會話處理可用與$該目的,但是在供應商和核心控制器不延伸控制器類因此不提供對會話相關功能的訪問。那麼是否有任何方法可以在不擴展Controller類的情況下使用這些函數。

目前我使用$_SESSION[]來設置和獲取會話變量。

除了上述以外,還有其他辦法嗎?

回答

2

Symfony2爲會話提供服務,這是您試圖檢索的內容。在Symfony2中所有的服務都使用該服務容器,這是你指的是與

$this->get('session');

要正確地使用該服務容器在你自己的控制器是什麼檢索您可以...

  1. 配置控制器作爲服務(見:here
  2. 擴展由Symfony2的堆棧(使提供給您的孩子控制器的get()法)
  3. 所提供的基本控制器類

的第一選擇是去正確的方式,你有過什麼樣的服務,然後注入到你的各個控制器的完全控制(見service container documentation

+0

嗯,我知道這個解決方案,我的問題是不同的。我想在Node.php的Twig核心庫中使用會話變量,目前它實現了Twig_NodeInterface。解決方案在選項1中提供,我認爲它是最後的解決方案,當symfony2沒有提供選項時,然後實現處理會話相關操作的服務。關於選項2我從一開始就知道。謝謝。 – bharatesh

+0

訪問容器內部任何內容的正確方法是製作服務。您是否閱讀過服務容器文檔? – JamesHalsall

+0

感謝您的幫助。 – bharatesh