フォームに問題があります。問題は、ビューにエラーを正しく表示できないことです(そう思います)。検証は正常に機能します。
古いパスワードが正しくない場合は入力ボックスの下にエラーメッセージが表示されますが、パスワードが一致しない場合はエラーがどこにも表示されません。
デバッグを行うと、データが取得されます。
ビューから:
@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">
}