我正在创建一种注册类型的表单,在其中我使用“重复”字段类型来获取用户所需的密码并进行确认。我将此字段添加到我的表单中:
$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'选项是我所需要的,但是我没有设法做到这一点,我不确定这是否是我正在寻找的正确方向?
感谢您的帮助, 马特
答案 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) }}