aşağıdaki basitleştirilmiş şablon kurulum var: şablonları istemek için 2.0 Play erişimiyle
Şimdi
- Ana (şablon)
- Anasayfa
- Detaylar zaman kullanıcı oturum açtığında,
username
oturum özniteliğini belirleyebileceğim şekilde ayarlandı Bir kullanıcı giriş yapmış veya etmediyse. Bir kullanıcı oturum veya eğer beni anlamaya yardımcı olmak için değil, ben şu oturumu yardımcı nesnesi vardır:object SessionHelper { val sessionKey = "username" def authenticated(implicit request: RequestHeader) = { request.session.get(sessionKey).exists(_ => true) } }
Ben örneğin bir
bildiğim kadarıyla bu bir şablonda bir örtülü değişkeni almak için tek yoldur — söyleyebilirim — yanaimplicit
istek nesnesi götüren bir şablonda kullanabilirsiniz:(implicit request: play.api.mvc.RequestHeader) ... @if(SessionHelper.authenticated) { <strong>Authenticated!</strong> } ...
, her yerde ben açıkça örtülü isteği "define" gerekir, bir görünümü oluşturur anlamına gelir değişken. Örneğin:
implicit request =>
deyimi olmadandef index = Action { implicit request => Ok(views.html.index(myStuff)) }
, bu derleme değil. Şimdi bu biraz garip olsa da, "alt görüşlerin" (örn. Ana Sayfa veya Ayrıntılar) içinde kaldığım sürece, bu görünümlerin her biri için bir denetleyici yöntemine sahip olduğum ve dolaylı olarak örtük örneği. Bununla birlikte, şablonuma (ör. Ana) oturumuma erişmem gerektiğinde, bu, hiçbir zaman bir denetleyici tarafından açık bir şekilde oluşturulmadığı için çalışmaz.
Bir şablonda oturuma erişmenin bir yolunu hemen göremiyorum ve hızlı bir Google, aynı konuyla ilgili bir kaç sorudan başka bir çözüm bulunmuyor. Herhangi bir fikir?
Güncelleme: Bu biraz this question ile ilgili gibi görünüyor.
, ben bulunamadı ": değer isteğini" olsun:
sınıfarequestHeader
yöntemplay.TemplateImports
tarafından otomatik ithalat oldu. – Wrench@Wrench: Kaka'nın cevabına bakın, bir açıklama sunar. Kısaca: bazı implicit'in kullanılabilir olmasını sağlayabilirsiniz. O sınıfa gir –