2

サインアップタイプのフォームを作成しています。その中で「繰り返し」フィールドタイプを使用して、ユーザーの希望するパスワードを取得して確認します。このフィールドを次のようにフォームに追加します。

$builder->add(
    'password',
    'repeated',
    array(
        'first_options'  => array('label' => 'user.form.password.label'),
        'second_options' => array('label' => 'user.form.password_confirm.label'),
        'invalid_message' => 'user.password_confirm.not_matched',
        'type' => 'password',
    )
);

これは正常に機能しますが、パスワードが一致しない場合、「一致しません」というエラー メッセージが、2 番目の確認フィールドではなく最初のフィールド (パスワード フィールド) に表示されます。このメッセージを確認フィールドに表示する方がはるかに論理的であるように思えますが、これを達成する方法を見つけるのに苦労していますか?

おそらく「error_mapping」オプションが必要だと思いましたが、それを機能させることができず、それが正しい方向であるかどうかわかりませんか?

助けてくれてありがとう、マット

4

2 に答える 2

5

誰かがまだsf2 2.7を行う方法に興味がある場合(私は古いバージョンをチェックしません)

        ->add('plainPassword', 'repeated', [
            'type' => 'password',
            'invalid_message' => 'user.password_repeat.not_match',
            'error_mapping' => [
                '.' => 'second'
            ]
        ])

このタスクのGoogle検索結果はまだ適切な回答なしでこの質問につながるので、それが役立つことを願っています

于 2015-10-07T11:30:44.533 に答える
2

確認フィールドを最初のオプションに移動します。

$builder->add(
    'password',
    'repeated',
    array(
        'second_options'  => array('label' => 'user.form.password.label'),
        'first_options' => array('label' => 'user.form.password_confirm.label'),
        'invalid_message' => 'user.password_confirm.not_matched',
        'type' => 'password',
    )
);

テンプレートのフィールドの順序を変更します

{{ form_row(form.password.second) }}
{{ form_row(form.password.first) }}
于 2014-02-06T10:23:36.943 に答える