dtj4307 2019-07-04 10:14
浏览 29

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

I'm having problem with displaying form when using CollectionType. It doesn't show ClientType inputs, just label "name".

Whats wrong? I don't understand..

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
        ]);
    }
}

And in my Twig template I have :

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

I have activate the "prototype" option because I have an "allow_add" and in my twig I have data-prototype="{{ form_widget(form.name.vars.prototype)|e }}"

How to make it show all input fields?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100