无法呈现表单,因为块名称数组包含重复项

Lio*_*ate 2 symfony-forms symfony twig fosuserbundle symfony-3.3

我正在使用Symfony 3.3.9,当我尝试渲染表单时,我有以下错误:

在呈现模板期间抛出了异常("无法呈现表单,因为块名称数组包含重复项:"_ fos_user_registration_form_errors","user_errors","user_errors","fos_user_registration_errors","form_errors".").

在此输入图像描述

预先感谢您的帮助 !

编辑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(),
    ));
}
Run Code Online (Sandbox Code Playgroud)

我的树枝:

{{ 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) }}
Run Code Online (Sandbox Code Playgroud)

小智 9

对于任何有这种例外的人:

您可能不应该扩展表单类型,而是创建自己的表单类型并使用getParent来继承行为.如果您的类名与其他类型(名称空间除外)相同,则必须覆盖AbstractType中的getBlockPrefix.

AbstractType的getBlockPrefix方法使用fqcn的最后一部分(类名),您可以使用重复的块名称.


Lio*_*ate 0

我找到了我的问题的答案。

那来自我的 RegistrationType 类,我试图用另一个类型类进行扩展。getParent 没有按预期工作...

注册类型 >用户类型> FOS\UserBundle\Form\Type\RegistrationFormType

我将所有字段从 UserType 移到 RegistrationType 中,并且它正在工作:)