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',
    )
);

这很好用——除了当密码不匹配时,“不匹配”错误消息会显示在第一个字段(密码字段)而不是第二个确认字段中。在我看来,让这条消息出现在确认字段中更合乎逻辑 - 但我正在努力寻找实现这一目标的方法?

我认为也许'error_mapping'选项是我需要的,但我没有设法完成这项工作,我不确定这是否是我寻找的正确方向?

感谢您的帮助,马特

4

2 回答 2

5

如果有人仍然对如何完成 sf2 2.7 感兴趣(我不检查旧版本)

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

所以我希望它会有所帮助,因为这个任务的谷歌搜索结果仍然会导致这个问题没有正确的答案

于 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 回答