2012-06-04 21 views
11

पर टेम्पलेट/दृश्य में सत्र कॉल कर सकता हूं मैं Play Framework 2.0 (मैं स्कैला का उपयोग कर रहा हूं) का उपयोग करने में नया हूं और सत्रों के बारे में एक प्रश्न पूछता हूं।क्या मैं प्ले फ्रेमवर्क

मैं रेल की पृष्ठभूमि पर रूबी से आया हूं, इसलिए मैं रूबी पर रूबी के संबंध में प्ले फ्रेमवर्क में जो कुछ भी सीखता हूं, उसके बारे में सोचता हूं।

इस बात को ध्यान में रखते हुए, क्या सत्र में संग्रहीत सामान को कॉल करने का कोई तरीका है, जबकि मैं देख रहा हूं?

यदि मेरे पास सत्र में संग्रहीत "हैलो" -> "दुनिया" है, तो मैं @ session.get ("हैलो") जैसे कुछ करने में सक्षम होना चाहता हूं और दृश्य में "दुनिया" का उपयोग करने में सक्षम होना चाहता हूं। क्या यह संभव है?

मैं देखता हूं कि दूसरा विकल्प नियंत्रक में वैरिएबल में वैल्यू को स्टोर करना है, और ओके (var) जैसे कुछ करने से दृश्य को पास करना है, लेकिन इस तरह से गुस्से में लग रहा है, खासकर यदि मैं और अधिक उपयोग करना शुरू करता हूं चर।

धन्यवाद!

उत्तर

22

सत्र निकालते हैं और वास्तव में सिर्फ लिए कर रहे हैं कर सकते हैं क्रॉस-अनुरोध डेटा। यदि आप यही चाहते हैं तो आप @session.get("hello") का उपयोग कर सकते हैं लेकिन वास्तव में आप जो भी हो सकते हैं वह नियंत्रकों से टेम्पलेट्स को पैरामीटर के रूप में निर्दिष्ट किए बिना सामान को पास करने का एक तरीका है। उस स्थिति में, उस प्रश्न का बहुत विस्तृत उत्तर यहां देखें: https://stackoverflow.com/a/9632085/77409

+0

सत्र इस विधि को आजमाने के दौरान प्रतीत नहीं होता है? अधिक जानकारी के लिए – 0atman

+0

अन्य उत्तर यहां देखें। –

+0

आह मैं देखता हूँ! धन्यवाद, यह काम किया :-) – 0atman

11

हाँ आप टेम्पलेट में @session.get("hello") उपयोग कर सकते हैं, लेकिन यह है कि आप टेम्प्लेट के आरंभ में कम से कम निहित 'सत्र' नामित पैरामीटर निर्दिष्ट करने के लिए जब स्काला नियंत्रकों के साथ टेम्पलेट का उपयोग कर की जरूरत है दिखता है:

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

इसके अलावा flash गुंजाइश है - यह session से भिन्न है कि यह केवल एक अनुरोध के लिए रहता है और हस्ताक्षरित नहीं है। तो यह अक्सर त्रुटि/inf संदेशों को परिवहन के लिए उपयोग किया जाता है। Session and flash

देखें डॉक

scopes अंत के रूप में प्रत्येक टेम्पलेट सिर्फ एक स्काला समारोह है, आप भी अपने नियंत्रक ओर से कार्रवाई की कॉल और कुकीज़ में सत्र डेटा Play स्टोर में

+0

मैं डालने की कोशिश की @ (के बगल में मेरे टेम्पलेट की शुरुआत में) मैं कहाँ मेरे तर्कों में पास करें, लेकिन जब मैं @ सत्र को कॉल करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है, नहीं मिला: मान सत्र – wynnch

+0

जब मैं @ (अंतर्निहित सत्र: play.api.mvc. सत्र) जोड़ने की कोशिश करता हूं, तो मुझे एक अलग त्रुटि मिलती है: '= > 'अपेक्षित लेकिन') ' – wynnch

+0

मिला क्या आपने किसी भी नियंत्रक में कुछ सत्र पहले सेट किया था? डोमेन के लिए कुकीज़ जांचें, वे वहां संग्रहीत हैं। – biesior

-3

आप निश्चित रूप से प्ले टेम्पलेट्स में ur सत्र को कॉल कर सकते हैं।

इस कोड का प्रयास करें - यह विचारों में काम करता है: "(अंतर्निहित सत्र: play.api.mvc.Session)"

$session.session_variable_name; 
संबंधित मुद्दे