@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 bootstrap字段如下所示:
@(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,为什么帮助文本全部显示(输入字段的右侧)
帮助文本来自@ elements.infos.mkString(“,”)。所以删除此行将删除帮助文本。或者你可以传递一个空字符串来抑制helptext可见:’_help – > “”
使用此代码时可以添加帮助文本:@ 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.
我想我在这里错过了这个概念
谢谢。
解决方法
更改信息内容的正确参数将会有所帮助(这有点不一致,您必须阅读源代码才能实现),所以如果要使用内置的引导字段,但是抑制信息, _help – > “”。
编辑#4:
以下是您应该如何调用您的特定复选框:
@checkBox(loginForm(“remember”),’_label – >消息(“login.remeberme”))(handler = implicitFieldConstructor,implicitly [Lang])
是的,@input意味着有一个名为input.scala.html的模板。这是所有输入助手的基本模板。
要理解为什么和如何工作,您应该深入Play 2.0和Scala(特别是隐含的参数)。