2012-06-04 14 views
11

我是使用Play Framework 2.0(我正在使用Scala)的新手,並且對會話有疑問。我可以在Play Framework上的模板/視圖中調用會話

我來自Ruby on Rails背景,所以我傾向於想到我在Play Framework中學習的有關Ruby on Rails的一切。

考慮到這一點,我有什麼方法可以在視圖中調用存儲在Session中的東西嗎?

如果我有存儲在會話中的「hello」 - >「world」,我希望能夠像@ session.get(「hello」)那樣做,並且能夠在視圖中使用「world」。這可能嗎?

我看到的另一個選擇是將值存儲在控制器中的變量中,並通過執行類似於OK(var)的方法將該值傳遞給視圖,但這種方式看起來有點笨重,特別是如果我開始使用更多變量。

謝謝!

回答

22

會議在餅乾和真的只是交叉請求數據。如果這是你想要的,那麼你可以使用@session.get("hello"),但你實際上可能會將東西從控制器傳遞到模板,而不必將它們指定爲參數。在這種情況下,請參閱此問題的非常詳細的答案: https://stackoverflow.com/a/9632085/77409

+0

會話似乎不在範圍內? – 0atman

+0

有關更多詳細信息,請參閱此處的其他答案。 –

+0

啊我明白了!謝謝,這工作:-) – 0atman

11

是的,你可以在模板中使用@session.get("hello"),但它看起來你需要在模板的開頭要指定一個名爲「會話」至少隱含參數使用模板時使用Scala控制器:

@()(implicit session: play.api.mvc.Session) 

也有是flash作用域 - 它與session不同,它只能針對一個請求並且未經過簽名。所以它最常用於傳輸錯誤/ inf信息。

Session and flash作用域DOC

最後爲每個模板僅僅是一個Scala的功能,您也可以撥打您的控制器一些行動和檢索會話數據在Play商店

+0

我試圖把「(隱式會議:play.api.mvc.Session)」在我的模板開始的@(旁),我傳遞我的參數,但是當我嘗試調用@session時,我得到一個錯誤,找不到:value session – wynnch

+0

當我嘗試添加@(隱式會話:play.api.mvc.Session)時,我得到一個不同的錯誤:'= >'expected but')'found – wynnch

+0

您是否在任何控制器中設置過一些會話?檢查域的Cookie,它們存儲在那裏。 – biesior

-3

您可以定義在播放模板中調用ur會話。

試試這個代碼 - 它在訪問量:

$session.session_variable_name; 
相關問題