2012-06-04 13 views
11

? Soy nuevo en el uso de Play Framework 2.0 (estoy usando Scala) y tengo una pregunta sobre sesiones.¿Puedo llamar sesión en plantilla/vista en Play Framework

Vengo de un fondo de Ruby on Rails, así que tiendo a pensar en todo lo que aprendo en Play Framework con respecto a Ruby on Rails.

Teniendo esto en cuenta, ¿hay alguna forma de que llame cosas almacenadas en la sesión mientras estoy en la vista?

Si tengo "hello" -> "world" almacenado en la sesión, quiero poder hacer algo como @ session.get ("hello") y poder usar "world" en la vista. es posible?

La otra opción que veo es almacenar el valor en una variable en el controlador, y pasarlo a la vista haciendo algo como OK (var), pero de esa manera parece un poco torpe especialmente si empiezo a usar más variables.

Gracias!

Respuesta

22

Sesiones de Juego tienda de galletas y son realmente sólo para datos de solicitud cruzada. Si eso es lo que quiere, entonces puede usar @session.get("hello"), pero lo que en realidad podría estar buscando es una forma de pasar cosas de los controladores a las plantillas sin tener que especificarlas como parámetros. En ese caso, vea la respuesta muy detallada a esa pregunta aquí: https://stackoverflow.com/a/9632085/77409

+0

sesión no parece estar en el alcance cuando pruebo este método? – 0atman

+0

Vea la otra respuesta aquí para más detalles. –

+0

¡Ah, ya veo! Gracias, eso funcionó :-) – 0atman

11

Sí, puedes usar @session.get("hello") en la plantilla, sin embargo se ve que es necesario especificar al menos implícita parámetro denominado 'sesión' al comienzo de la plantilla cuando el uso de plantillas con los controladores de Scala:

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

También hay es flash ámbito - difiere de session que vive solo para una solicitud y no está firmado. Por lo tanto, se usa con mayor frecuencia solo para transportar mensajes de error/inf.

Ver Session and flash Scopes doc

Por último, ya que cada plantilla es simplemente una función de Scala, también puede llamar a alguna acción de su controlador y recuperar datos de la sesión

+0

He intentado poner "(sesión implícita: play.api.mvc.Session)" al principio de mi plantilla junto al @() donde paso en mis argumentos, pero cuando intento llamar a @session obtengo un ERROR, no encontrado: sesión de valor – wynnch

+0

Cuando intento agregar @ (sesión implícita: play.api.mvc.Session), obtengo un error diferente: '= > 'esperado pero') 'encontrado – wynnch

+0

¿Ha establecido alguna sesión antes en cualquier controlador? Compruebe las cookies para el dominio, se almacenan allí. – biesior

-3

Puede llamar sin problemas a la sesión ur en las plantillas de reproducción.

Prueba este código - que funciona en las vistas:

$session.session_variable_name;