我的表单有问题,问题是我无法正确显示错误(我想是这样)。验证工作正常。
当旧密码不正确时,如果密码不匹配,则输入框下方会显示错误消息错误不会出现在任何地方。
如果我做一些调试,我会得到数据:
从视野中:
@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">
}
答案 0 :(得分:1)
首先,您可能希望对密码字段使用辅助方法,因为它们有一个。看看views.html.helper.inputPassword
并像这样使用它:
@helper.inputPassword(field = pass_form("old_password"))
未显示密码不匹配错误的原因是,它是绑定到表单本身而不是特定字段的错误。您必须先检查表单的errors
字段,然后才会显示Seq[FormError]
。然后,您可以以适当的方式显示这些......
祝你好运