Playframework 2.0 表单验证和表单帮助器

Playframework 2.0 表单验证和表单帮助器,playframework-2.0,Playframework 2.0,在Play 2.0中,我仍然在为表单验证和表单助手而挣扎。我有这个登录屏幕,我和Twitter引导一起使用。因此,我的登录表单如下所示: @helper.form(routes.Application.authenticate, 'class -> "form-horizontal") { <fieldset> <legend>@Messages("login")</legend> @if(loginFo

在Play 2.0中,我仍然在为表单验证和表单助手而挣扎。我有这个登录屏幕,我和Twitter引导一起使用。因此,我的登录表单如下所示:

    @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>
    }
为什么这里的名字是inputText而不仅仅是input?因为还有一个input.scala.html

那么,如果我想为复选框创建一个fieldhandler,如何使用它?以下格式给了我错误:

@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.
我想我错过了这里的概念。。。
谢谢。

信息文本来自
@elements.infos.mkString(“,”)
。要显示错误,应使用
@elements.errors(elements.lang).mkString(“,”)

更改infos内容的正确参数是help(这有点不一致,您必须阅读源代码才能实现这一点),因此,如果您想使用内置引导字段但抑制infos,您需要传递
“\u help->”

编辑#4的

以下是您应该如何调用特定复选框:

@复选框(loginForm(“记住”),“\u标签->消息(“login.remeberme”))(handler=implicitFieldConstructor,implicitly[Lang])

是的,
@input
意味着有一个名为
input.scala.html
的模板。它是所有输入助手的基本模板

为了理解为什么以及如何工作,您应该深入了解Play2.0和Scala(特别是隐式参数)

  • 由于这一行
    @elements.infos.mkString(“,”)
    。您正在显示有关该字段的信息。将其删除以不显示信息
  • 添加此代码:

    @if(elements.hasErrors) {
        <span class="help-inline">@elements.infos.mkString(", ")</span> 
    }
    
    @if(elements.hasErrors){
    @elements.infos.mkString(“,”)
    }
    
  • 要设置类名:请将其添加到Twitter引导字段:
    class=“@elements.args.get”(“\u class”)
    。并在登录表单中添加类参数,如下所示:
    @inputText(loginForm(“email”),“\u label->”email“,“\u class->”classname”)


  • 要理解这个概念,请看一下源代码:

    我也在同一场战斗中展示错误:) 目前我正在使用:

    <span class="errors badge badge-important">@elements.errors.mkString(", ")</span>
    
    @elements.errors.mkString(“,”)
    
    如果没有错误,将被隐藏,请查看以下内容:


    但仍在寻找将“Required”翻译为葡萄牙语的方法。

    好的,更有意义,我是否可以为复选框提供不同的隐式字段构造函数,因为对于复选框,我需要不同的标记?翻译键是如何建立的?如果我要翻译文本“此字段是必需的?”“?您可以将字段构造函数传递给
    @checkbox
    。但是如何将特定的字段构造函数传递给一个字段呢?这是
    checkbox.scala.html
    @(字段:play.api.data.field,args:(Symbol,Any)*)(隐式处理程序:fieldConstructor,lang:play.api.i18n.lang)
    ,因此,将构造函数传递给第二个参数列表:
    @checkbox(field=…)(handler=YourCustomCheckboxConstructor)
    @if(elements.hasErrors) {
        <span class="help-inline">@elements.infos.mkString(", ")</span> 
    }
    
    <span class="errors badge badge-important">@elements.errors.mkString(", ")</span>