我正在构建一个自定义表单供用户重置密码。除了检查密码不匹配外,一切都已完成。当2个输入的字段不匹配时没有给出错误 - 但表单将重新加载为空,所以我知道它已被捕获
在vars转储表单中我有{{dump(form.new.first.vars.errors)}}
array(1) {
[0]=>
object(Symfony\Component\Form\FormError)#251 (4) {
["message":"Symfony\Component\Form\FormError":private]=>
string(26) "fos_user.password.mismatch"
["messageTemplate":protected]=>
string(26) "fos_user.password.mismatch"
["messageParameters":protected]=>
array(1) {
["{{ value }}"]=>
string(5) "array"
}
["messagePluralization":protected]=>
NULL
}
}
以下是我如何显示表格
<div class="container">
<div class="row">
<div class="col-sm-4 single">
<div class="panel r-panel panel-default">
<div class="panel-heading">
<h1>Enter New Password</h1>
</div>
<div class="panel-body">
<form action="{{ path('fos_user_resetting_reset', {'token': token}) }}" {{ form_enctype(form) }} method="POST" class="fos_user_resetting_reset">
<div class="form-group">
<label for="{{form.new.first.vars.id}}"> Password
<span class="text-primary">*</span>
</label>
{{ form_widget(form.new.first, {'attr': {'class': 'form-control'}}) }}
</div>
<label for="{{form.new.second.vars.id}}"> Confirm
<span class="text-primary">*</span>
</label>
{{ form_widget(form.new.second, {'attr': {'class': 'form-control'}}) }}
</div>
<input type="submit" value="Reset Password" />
</div>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
我希望在twig代码中我可以添加类似
的内容{% if passwords_mismatch %} ERROR! {% endif %}
答案 0 :(得分:1)
您还可以尝试使用Symfony2表单可用的重复表单类型。 这可以替换您使用的2个输入字段。 重复的表单字段显示2个输入字段,并检查它们是否相等。
您应该将'error_bubbling' => true
添加到重复字段
有关重复表单类型的详细信息,请参阅:http://symfony.com/doc/current/reference/forms/types/repeated.html
例如:
$builder->add('new', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'DocdataUserBundle'),
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat password'),
'invalid_message' => 'fos_user.password.mismatch',
'error_bubbling' => true
))
答案 1 :(得分:0)
->add('plainPassword', 'repeated', array(
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch'))