3

我的表单有问题,问题是我无法正确显示错误(我认为是这样)。验证工作正常。

当旧密码不正确时,输入框下方会显示错误消息,另一方面,当密码不匹配时,错误不会出现在任何地方。

如果我进行一些调试,我会得到数据:

从观点来看: @pass_form("password").errors

我明白了:

FormError(password,Passwords dont match,WrappedArray()) 

所以我的问题是如何在视图中修复表单或代码,以正确打印该错误。

Form(
    mapping(
        "old_password" -> text.verifying(Messages("forms.password.old.mismatch"),
        password => User.correct_?(user.id, password)),
       "password" -> tuple(
       "new" -> text(minLength = conf.getInt("password.length.min").get),
       "confirm" -> text).verifying(Messages("forms.password.new.mismatch"), 
          passwords => passwords._1 == passwords._2)
      )
    ((_, password) => password._1)((_) => Some(("", ("", ""))))
         )

鉴于我有:

@helper.form(action = routes.UserController.submitPassword) {

        @helper.input(pass_form("old_password")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        @helper.input(pass_form("password.new")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        @helper.input(pass_form("password.confirm")) { (id, name, value, args) =>
            <input type="password" name="@name" id="@id" @toHtmlArgs(args)>  
        }

        <input type="submit" value="Set">
    }
4

1 回答 1

1

首先,您可能希望对密码字段使用辅助方法,因为它们有一个。看看views.html.helper.inputPassword并像这样使用它:

@helper.inputPassword(field = pass_form("old_password"))

不显示密码不匹配错误的原因是,它是绑定到表单本身而不是特定字段的错误。您必须为此检查errors表单的字段,这将为您提供Seq[FormError]. 然后,您可以以适当的方式显示这些...

此致

于 2012-10-17T23:12:57.270 回答