Symfony 4:使用CollectionType时表单不显示输入字段

时间:2019-07-04 10:14:27

标签: php symfony twig

使用CollectionType时,我在显示表单时遇到问题。它不显示ClientType输入,仅显示标签“名称”。

怎么了?我不明白。

SubscriptionType:

class SubscriptionType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

         ->add('name', CollectionType::class, array(
             'entry_type' => ClientType::class,
             'allow_add' => true,
             'prototype' => true,
         ))

            ->add('enabled', null, array(
                'label'    => 'Activer le contrat de support'), [
                'required'   => false,
            ])
            ->add('startDate', DateTimePickerType::class, [
                'label' => 'Date de début de la formation',
                'help' => 'La formation peut être programmée en sélectionnant une date future',
            ])
            ->add('endDate', DateTimePickerType::class, [
                'label' => 'Date de fin de la formation',
                'help' => 'Sélectionnez la date de fin de la formation',
            ]);
    }


    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Subscription::class,
            'name' => null
        ]);
    }
}

ClientType:

class ClientType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

        ->add('name', EntityType::class, [
            'class' => Clients::class,
            'label'    => 'Domaine du client',
        ])

        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Clients::class,
            'name' => null
        ]);
    }
}

在我的Twig模板中,我有:

{% block body %}

    <h1>{{ 'Ajout d\'un client' }}</h1>

    {{ form_start(form) }}
    {{ form_row(form.name) }}
    <ul id="name-fields-list"
        data-prototype="{{ form_widget(form.name.vars.prototype)|e }}"
        data-widget-tags="{{ '<li></li>'|e }}"
        data-widget-counter="{{ form.children|length }}">
        {% for nameField in form.name %}
            <li>
                {{ form_errors(nameField) }}
                {{ form_widget(nameField) }}
            </li>
        {% endfor %}
    </ul>

    <button type="button"
            class="add-another-collection-widget"
            data-list-selector="#email-fields-list">Add another customer</button>

    {{ form_row(form.enabled) }}
    {{ form_row(form.startDate) }}
    {{ form_row(form.endDate) }}

    <script src="{{ asset('build/js/add-collection-widget.js') }}"></script>

    <button type="submit" class="btn btn-primary">
        <i class="fa fa-save" aria-hidden="true"></i> {{ 'Ajout d\'un client' }}
    </button>
    <a href="{{ path('support_admin_client_index') }}" class="btn btn-link">
        <i class="fa fa-list-alt" aria-hidden="true"></i> {{ 'Retour à la liste des clients' }}
    </a>
    {{ form_end(form) }}


{% endblock %}


{% block javascripts %}
    <script src="{{ asset('build/js/add-collection-widget.js')  }}"></script>
{% endblock %}

我激活了“ prototype”选项,因为我有一个“ allow_add”,并且在我的树枝中有data-prototype="{{ form_widget(form.name.vars.prototype)|e }}"

如何使其显示所有输入字段?

0 个答案:

没有答案
相关问题