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

时间:2017-09-16 19:51:50

标签: symfony twig fosuserbundle symfony-forms symfony-3.3

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

  

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

enter image description here

提前感谢您的帮助!

编辑2017年9月17日 你走了:

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(),
    ));
}

My Twig:

{{ 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) }}

2 个答案:

答案 0 :(得分:8)

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

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

AbstractType的getBlockPrefix方法使用fqcn的最后一部分(类名),你可以有一个重复的块名。

答案 1 :(得分:0)

我找到了问题的答案。

那是我的RegistrationType类,我试图用另一个Type类扩展。 getParent无法正常工作...

RegistrationType&gt; UserType &gt; FOS \ UserBundle \ Form \ Type \ RegistrationFormType

我从RegistrationType中的UserType移动所有字段并且它正在工作:)