0

当我尝试render an error message关联到repeated password field. 问题是invalid_message如果我按如下方式实现树枝,则不会呈现,

     {{ form_start(form, {'attr': {'class': 'form-horizontal', 'role': 'form', 'novalidate': 'novalidate'}}) }}
        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.first, "Password") }}
          <div class="col-sm-8">
            {{ form_widget(form.password.first) }}   
            <span class="help-block">{{ form_errors(form.password) }}</span>
          </div>              
        </div>

        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.second, "Confirm password") }}
          <div class="col-sm-8">
            {{ form_row(form.password.second) }}

          </div>
        </div>
        ........

但是,如果我使用form_row,

     {{ form_start(form, {'attr': {'class': 'form-horizontal', 'role': 'form', 'novalidate': 'novalidate'}}) }}
        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.first, "Password") }}
          <div class="col-sm-8">
            {{ form_row(form.password.first) }}   
            <span class="help-block">{{ form_errors(form.password) }}</span>
          </div>              
        </div>

        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.second, "Confirm password") }}
          <div class="col-sm-8">
            {{ form_row(form.password.second) }}

          </div>
        </div>
        ........

错误显示在密码文本框的顶部(这不是我放置错误的区域,因为span它实际上位于文本框下方)并且也没有突出显示文本框。我尽力解决这个问题,但没有运气。如果您的专家可以提供任何专家指导来解决此问题,我将不胜感激。:)

仅供参考:表单控制器上的重复密码

$builder->add( 'password', 'repeated', array( 'type' => 'password', 
                                      'required' => true,
                                      'invalid_message' => ErrorMessages::PASSWORDS_DONOT_MATCH,
                                      'options' => array('attr' => array('class' => 'password-field form-control')),                                                                                   
                                      'first_options'  => array('label' => false,                                                                    
                                                                'label_attr'=>array('class'=>'col-sm-3 control-label')),
                                      'second_options' => array('label' => false,                                                                    
                                                                'label_attr'=>array('class'=>'col-sm-3 control-label')))); 
4

1 回答 1

3

解决方案很简单,如果将来有人遇到这个问题,我会发布这个。解决方案是使用forms_row例如呈现字段:{{ form_row(form.password.first) }}并包含'error_bubbling' => true到您希望显示错误的字段中。包含这个解决了字段突出显示和错误消息放置的问题,在我的情况下,我在first password text box.

工作示例,

  • twig

     {{ form_start(form, {'attr': {'class': 'form-horizontal', 'role': 'form', 'novalidate': 'novalidate'}}) }}
        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.first, "Password") }}
          <div class="col-sm-8">
            {{ form_row(form.password.first) }}   
            <span class="help-block">{{ form_errors(form.password) }}</span>
          </div>              
        </div>
    
        <div class="form-group {% if form.password.vars.errors|length > 0 %}has-error{% endif %} {% if form.password.vars.required == 'true' %}required{% endif %}">
          {{ form_label(form.password.second, "Confirm password") }}
          <div class="col-sm-8">
            {{ form_row(form.password.second) }}
    
          </div>
        </div>
        ........
    
  • form控制器_

    $builder->add( 'password', 'repeated', array( 'type' => 'password', 
                                          'required' => true,
                                          'invalid_message' => ErrorMessages::PASSWORDS_DONOT_MATCH,
                                          'options' => array('attr' => array('class' => 'password-field form-control')),                                                                                   
                                          'first_options'  => array('label' => false, 
                                                                    //here I enable error bubbling so that on the twig it will render the error under the first password text field 
                                                                    'error_bubbling' => true,
                                                                    'label_attr'=>array('class'=>'col-sm-3 control-label')),
                                          'second_options' => array('label' => false,                                                                    
                                                                    'label_attr'=>array('class'=>'col-sm-3 control-label'))));   
    
于 2014-10-07T05:16:39.327 回答