Symfony2-FOSUserBundle-在自定义重置页面上检查密码确认不匹配

Symfony2-FOSUserBundle-在自定义重置页面上检查密码确认不匹配,symfony,fosuserbundle,Symfony,Fosuserbundle,我正在构建一个自定义表单,供用户重置密码。除了检查密码不匹配外,所有操作都已完成。如果输入的两个字段不匹配,则不会出现错误-但是表单将重新加载为空,因此我知道它已被捕获 在形式vars dump中,我有{{dump(form.new.first.vars.errors)} } 下面是我如何显示表单的 <div class="container"> <div class="row"> <div class="col-sm-4 single">

我正在构建一个自定义表单,供用户重置密码。除了检查密码不匹配外,所有操作都已完成。如果输入的两个字段不匹配,则不会出现错误-但是表单将重新加载为空,因此我知道它已被捕获

在形式vars dump中,我有{{dump(form.new.first.vars.errors)}

}

下面是我如何显示表单的

<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>

您还可以尝试使用Symfony2表单可用的重复表单类型。 这可以替换您使用的两个输入字段。 重复表单字段显示2个输入字段,并检查它们是否相等

您应该将add
'error\u bubbling'=>true
设置为重复字段

有关重复表单类型的详细信息,请参阅:

例如:

$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
        ))

错误可能会显示在整个表单上,在这种情况下,您没有显示这些错误的方法。您是否尝试在您的
标记后添加
{{form_errors(form)}}
{% if passwords_mismatch %} ERROR! {% endif %}
$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
        ))
  ->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'))