我仍然在表单验证和表单助手在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