Symfony2形成重复字段 - 如何移动'不匹配'消息来确认字段?

时间:2013-08-10 17:31:39

标签: forms symfony

我正在创建一种注册类型的表单,在其中我使用“重复”字段类型来获取用户所需的密码并进行确认。我将此字段添加到我的表单中:

$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'选项是我所需要的,但是我没有设法做到这一点,我不确定这是否是我正在寻找的正确方向?

感谢您的帮助, 马特

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分: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) }}
相关问题