2015-01-15 47 views
0

我需要能夠從另一個控制器中的一個控制器提供某些請求數據。我可以創建一個服務來在一個控制器中設置數據,但是當另一個控制器觸發並獲得服務時,會創建一個新的服務實例。有什麼辦法可以使這些數據靜態並在兩個控制器之間共享?Symfony 2 - 如何在控制器之間共享數據

+0

你是怎麼打電話給第二個控制器的?如果你正在模板中使用'{{render('xxx')}}',那麼你可以在你的第二個控制器中調用'@ request_stack'的主請求。 – qooplmao 2015-01-15 19:38:43

+0

第二個控制器從主頁上的鏈接調用。我看不到render()是如何工作的,但我會試一試。 – tomchkk 2015-01-15 21:52:00

+0

控制器只是一個單獨的頁面嗎?它可以通過'$ _GET'參數傳遞嗎? – qooplmao 2015-01-15 22:58:23

回答

1

只要你需要信息,在PHP中可以從一個新的請求,你會做同樣的基本的東西:在會話

  • 存儲。 Symfony2爲此提供了一個很棒的會話組件。理想的數據只需在用戶導航時保存即可
  • 將其存儲在數據庫中。 Symfony2支持Doctrine,使其變得非常簡單。理想的永久存儲

可選:在文件系統中

  • 存儲。不推薦,除非它實際上是一個文件,但也可以。
+0

謝謝。將它存儲在文件系統或數據庫中看起來似乎有點矯枉過正。我一直在避免使用會話,因爲我堅持認爲可能有一種方法將其靜態存儲在服務中。顯然不是。 – tomchkk 2015-01-15 18:28:09

0

最後,我沒有使用會話來存儲數據,而是創建了兩條到同一控制器動作的獨立路由。我在控制器操作中添加了一個可選參數,其中一個默認值只在其中一個路由中指定。然後我可以在控制器運行時測試該參數的值。在調用此控制器操作的Twig模板中,可以使用這些路徑中的任何一個來生成路徑,具體取決於已有的變量。

一點工作,但問題解決了!

相關問題