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 に答える