2017-09-16 13 views
1

私はsymfonyの3.3.9を使用していると私は、私は次のエラーを持っているフォームレンダリングしようとしていたときに含まれているので:ブロック名の配列が重複

An exception has been thrown during the rendering of a template ("Unable to render the form because the block names array contains duplicates: "_fos_user_registration_form_errors", "user_errors", "user_errors", "fos_user_registration_errors", "form_errors".").

enter image description here

ご協力いただきありがとうございます!

EDITここ17/09/2017 あなたが行く:

public function indexAction() 
{ 
    /** @var $formFactory FactoryInterface */ 
    $formFactory = $this->get('fos_user.registration.form.factory'); 

    $form = $formFactory->createForm(); 

    return $this->render('AppTMMainBundle:Default:index.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

私の小枝:

{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register')}) }} 
<div class="card-content"> 
    <h3 class="text-center title" style="color: #3C4858;margin:10px 0;">Inscription</h3> 
    <div class="social text-center"> 
     <a class="btn btn-just-icon btn-round btn-facebook" href="{{ path('hwi_oauth_service_redirect',{'service': 'facebook'}) }}"> 
      <i class="fa fa-facebook"> </i> 
     </a> 
     <a class="btn btn-just-icon btn-round btn-twitter" href="{{ path('hwi_oauth_service_redirect',{'service': 'twitter'}) }}"> 
      <i class="fa fa-twitter"></i> 
     </a> 
     <a class="btn btn-just-icon btn-round btn-google" href="{{ path('hwi_oauth_service_redirect',{'service': 'google'}) }}"> 
      <i class="fa fa-google-plus"></i> 
     </a> 
    </div> 
    <p class="description text-center">Ou de façon plus classique</p> 
    <div class="row"> 
     <div class="col-xs-6"> 
      {{ form_label(form.firstname) }} 
      {{ form_widget(form.firstname) }} 
     </div> 
     <div class="col-xs-6"> 
      {{ form_label(form.lastname) }} 
      {{ form_widget(form.lastname) }} 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-xs-12"> 
      {{ form_label(form.email) }} 
      {{ form_widget(form.email) }} 
     </div> 
    </div> 
    <div class="row"> 
     <div class="col-xs-6"> 
      {{ form_widget(form.plainPassword.first, {'attr': {'class': 'form-control', 'placeholder': 'form.password'}}) }} 
     </div> 
     <div class="col-xs-6"> 
      {{ form_widget(form.plainPassword.second, {'attr': {'class': 'form-control', 'placeholder': 'form.password_confirmation'}}) }} 
     </div> 
    </div> 

    <!-- If you want to add a checkbox to this form, uncomment this code --> 
    <div class="input-group"> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" name="optionsCheckboxes" checked=""> 
       {{ 'index.proceed.agree'|trans }} <a href="{{ path('tm_main_policies_terms') }}">{{ 'index.proceed.cgu'|trans }}</a>. 
      </label> 
     </div> 
    </div> 
    <div class="footer text-center"> 
     <input type="submit" class="btn btn-primary btn-round" value="{{ 'index.action.subscribe'|trans }}"> 
    </div> 
</div> 
{{ form_end(form) }} 
+1

質問にあなたのフォームと小枝テンプレートを含めることができますか? – Strnm

+1

フォームに 'user_rest'が2回定義されているようです。フォームコードを表示できますか? –

+0

投稿が更新されました。 :) – Liogate

答えて

0

私は私の質問への答えを見つけました。

これは、私が別のタイプクラスで拡張しようとしていたRegistrationTypeクラスからのものです。 getParentは...だけでなく期待に動作していない

RegistrationType> のUserType > FOS \ UserBundle \フォーム\タイプ\ RegistrationFormType

私はRegistrationType内のUserTypeからすべてのフィールドを移動し、それがために:)

3

働いていますそのような例外を持つ人:

フォームタイプを拡張するのではなく、独自のフォームを作成してgetParentを使用して、その動作を継承してください。 クラス名が他の型(名前空間を除く)と同じである場合は、 を使用して、AbstractTypeからgetBlockPrefixをオーバーライドする必要があります。

AbstractTypeのgetBlockPrefixメソッドは、fqcn(クラス名)の最後の部分を使用し、重複するブロック名を持つことができます。