我仍然在表單驗證和表單助手在Play 2.0中掙扎。我有與Twitter Bootstrap一起使用的這個登錄屏幕。所以我的登錄表單是這樣的:表單驗證和表單助手
@helper.form(routes.Application.authenticate, 'class -> "form-horizontal") {
<fieldset>
<legend>@Messages("login")</legend>
@if(loginForm.hasGlobalErrors) {
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
@loginForm.globalError.message
</div>
}
@if(flash.contains("success")) {
<div class="alert alert-success">
<a class="close" data-dismiss="alert">×</a>
@flash.get("success")
</div>
}
@inputText(loginForm("email"), '_label -> "Email")
@inputText(loginForm("password"), '_label -> Messages("login.password"))
<div class="form-actions">
<button type="submit" class="btn btn-success">@Messages("button.doLogin")</button>
@Messages("or")
<a class="btn btn-warning" href="routes.LandingPage.index">@Messages("button.doCancel")</a>
</div>
</fieldset>
}
我的Twitter的引導現場看起來像以下:
@(elements: helper.FieldElements)
@**************************************************
* Generate input according twitter bootsrap rules *
**************************************************@
<div class="control-group @if(elements.hasErrors) {error}">
<label class="control-label" for="@elements.id">@elements.label</label>
<div class="controls">
@elements.input
<span class="help-inline">@elements.infos.mkString(", ")</span>
</div>
</div>
這是輸出:
我不明白:
1,W HY是幫助文本可見的所有TE時間(在輸入域的右側)
幫助文本來自@elements.infos.mkString(", ")
。因此,刪除此行將刪除幫助文本。或者您可以傳遞一個空字符串來抑制可見的幫助文本:'_help -> ""
2,如何在錯誤發生時僅顯示幫助文本?可使用此代碼時,可以添加
幫助文本:@elements.errors(elements.lang).mkString(", ")
3,什麼是可能的參數傳遞給輸入文本字段?我想通過類的名稱爲好,但我不知道怎麼...
我可以定義我的自定義參數傳遞(即類或佔位符):class="@elements.args.get('_class)
,然後我可以通過它像這樣:'_class -> "classname"
4,我可以在一個模板部件中定義多個implicitFieldConstructors
嗎?因爲對於複選框,我希望另一個fieldConstructor與輸入框和textarea相比,但如何做到這一點?此
例如:在計算機數據庫樣本Twitter的引導字段定義,但隨後它的使用方法如下:
@inputText(loginForm("email"), '_label -> "Email")
爲什麼是這裏的名字inputText的並不僅僅是輸入?因爲還有一個input.scala.html?
所以,如果我想爲複選框做一個字段處理程序,如何使用它?下面的格式給我的錯誤:
@checkBoxHandler = @{ FieldConstructor(s2ftheme.constructors.checkbox.render) }
@checkbox(loginForm("remember"), '_label -> Messages("login.remeberme"))(handler = implicitFieldConstructor)
我得到的錯誤信息:
not enough arguments for method apply: (implicit handler: views.html.helper.FieldConstructor, implicit lang: play.api.i18n.Lang)play.api.templates.Html in object checkbox. Unspecified value parameter lang.
我想我在這裏失蹤的概念... 感謝。
好吧,更有意義,我還可以提供一個不同的隱式FieldConstructor讓我們說一個複選框,因爲對於複選框,我想要一個不同的標記? – adis 2012-04-18 15:05:58
翻譯密鑰是如何構建的?如果我想翻譯文本「此字段是必需的」? – adis 2012-04-18 15:08:14
您可以將字段構造函數傳遞給'@ checkbox'。 – 2012-04-18 15:09:01