tengo la siguiente configuración de plantilla simplificada:Juega 2.0 Acceso a solicitar en las plantillas
- principal (plantilla)
- Página
- detalles
Ahora, cuando una el usuario inicia sesión, se establece un atributo de sesión username
para que pueda figurar fuera si un usuario está conectado o no. Con el fin de ayudar a mí averiguar si un usuario está conectado o no, tengo el siguiente objeto de sesión ayudante:
object SessionHelper {
val sessionKey = "username"
def authenticated(implicit request: RequestHeader) = {
request.session.get(sessionKey).exists(_ => true)
}
}
¿Qué puedo usar en una plantilla que toma un objeto implicit
petición, por ejemplo:
(implicit request: play.api.mvc.RequestHeader)
...
@if(SessionHelper.authenticated) {
<strong>Authenticated!</strong>
}
...
Desde — por lo que yo puedo decir — esta es la única manera de obtener una implícita variables en una plantilla, que significa que en todas partes se renderiza una vista, necesito de forma explícita "definir" la petición implícita variable. Por ejemplo:
def index = Action { implicit request =>
Ok(views.html.index(myStuff))
}
Sin la declaración implicit request =>
, no compila. Ahora bien, aunque esto es un poco incómodo, siempre que permanezca dentro de cualquiera de las "sub-vistas" (por ejemplo, Página de inicio o Detalles) está bien porque para cada una de esas vistas tengo un método de control y como tal también acceso al RequestHeader
implícito ejemplo. Sin embargo, cuando necesito acceder a la sesión en mi plantilla (por ejemplo, Main), esto no funciona porque nunca es procesado explícitamente por un controlador.
No estoy viendo de inmediato una forma de acceder a la sesión en una plantilla, y un Google rápido no revela mucho más que un par de preguntas sobre el mismo tema sin resolución. ¿Algunas ideas?
Actualización: parece que esto está relacionado de alguna manera con this question.
Con Play 2.3.x, consigo "no encontrado: solicitud de valor". – Wrench
@Wrench: Mire la respuesta de Kaká, él ofrece una explicación. En resumen: se puede tener algunos de implícita disponibles. Sumérgete en esa clase –