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解決策は、 eg:を使用してフィールドをレンダリングし、エラーを表示するフィールドに{{ 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 に答える