0
我正在做一些PlayFramework模板的工作,但我遇到了一個問題。我們使用遊戲的幫手,需要Messages
(從play.api.i18n
導入)。一切都好,直到我們的設計師想要以Modal的形式登錄表單...因爲它會被附加到每一個模板,所以我們需要在任何地方添加消息參數 - 這是醜陋的恕我直言。工作aroung將隱式參數傳遞給每個模板
有沒有辦法解決這個問題?將它傳遞到任何地方都意味着我必須在任何地方都可以使用Inject()
,即使只需要關閉類型檢查程序即可。
示例頁面:
@(project: model.Project)(implicit request: Request[AnyContent], messages: Messages)
@main(project.name){
<h1>@project.name</h1>
<ul>
@for(member <- project.members) {
<li><a href="@routes.UsersController.view(member)">@member</a></li>
}
</ul>
}{}
片段主要模板:
@(title: String)(content: Html)(additionalImport: Any)(implicit req: Request[AnyContent], messages: Messages)
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
@* this call actually needs that param. *@
@header.navbar()
<div class="container">
@req.flash.get("error").map { error =>
<div class="flash-error">@error</div>
}
@content
</div>
</body>
</html>
的形式爲:
@import model.UserLoginData
@(loginForm: Form[UserLoginData])(implicit req: Request[AnyContent], messages: Messages)
@helper.form(action = routes.AuthenticationController.login()) {
@loginForm.globalErrors.map { error =>
<div class="error">@error.message</div>
}
@helper.inputText(loginForm("login"))
@helper.inputPassword(loginForm("password"))
<input type="submit" value="Zaloguj"/>
}
<a href="@routes.AuthenticationController.recoverForm()">Zapomniałem hasła</a>
我跌倒了這兩個解決方案都有些不妥。可能是問題會出現在性能或測試中,而我在DI方面沒有經驗可言。 –
我會對它們進行測試。 – Haito
確實有這麼長時間的浪費。我們實施了第一個解決方案。它的工作原理。非常感謝你。 – Haito