Форма Symfony 4 с несколькими раскрывающимися списками вместо одного раскрывающегося списка - PullRequest
0 голосов
/ 20 октября 2019


Я использую Symfony 4 и доктрину. У меня есть два клиента Entities и машины, где один клиент может взять 0 ... n машин. Теперь я хочу создать форму, в которой я могу добавить / удалить несколько машин для одного клиента. Это довольно легко с классом entityType и множественной опцией. Но удобство использования было бы намного лучше реализовать с помощью jQuery, например symfony-collection После нескольких часов безуспешных попыток я не уверен, возможно ли это с этим плагином. Мне удалось получить раскрывающиеся списки, добавить или удалить их, но число существующих машин у одного клиента показывает одинаковое количество раскрывающихся списков с заполнителем вместо правильного идентификатора, и сохранение в базе данных всегда выдает ошибку.

Итак, мой вопрос: это правильный путь, или я совершенно не прав с моим пониманием этого плагина? Также в примере доктрины на главной странице есть сначала список существующих элементов, а затем плагин. Вот почему я сомневаюсь.

После дальнейшего чтения документов я реализовал форму с CollectionType - EntityType. К сожалению, использование формы темы (для изменения кнопок) не работает.

С темой есть кнопки рядом с первым элементом, но они не работают.

Вот мой код вида:

            .....
            ->add('komponenten', CollectionType::class, [
            'entry_type' => EntityType::class,
            'entry_options' => [
                'class' => Inventory::class,
                'choice_label' => 'modell',
                'placeholder' => 'insert machine'
            ],
            'allow_add'     => true,
            'allow_delete'  => true,
            'by_reference'  => false,
            'prototype' => true,
            'block_prefix' => 'myEntityType',
            'attr' => array(
                'class' => 'inventar-collection',
            ),
        ])
        ...

Шаблон. html.twig:

{% form_theme form 'jquery.collection.html.twig' 'options-theme.html.twig' %}
...
{{ form_start(form, {'attr': {'id': 'customer_form' } }) }}
{{ form_row(form.komponenten) }}
...
{{ form_end(form) }}

И options-theme.html.twig:

{% block myEntityType_label %}{% endblock %}
{% block myEntityType_errors %}{% endblock %}

{% block myEntityType_widget %}

    <div class="row">
        <div class="col-md-6">
            {{ form_widget(form.parent.komponenten) }}
        </div>
        <div class="col-md-2">
            <a href="#" class="collection-up btn btn-default" title="Move element up"><span class="fas fa-arrow-up"> </span></a>
            <a href="#" class="collection-down btn btn-default" title="Move element down"><span class="fas fa-arrow-down"> </span></a>
        </div>
        <div class="col-md-2">
            <a href="#" class="collection-add btn btn-default" title="Add element"><span class="fas fa-plus-square"> </span></a>
            <a href="#" class="collection-remove btn btn-default" title="Delete element"><span class="fas fa-trash"> </span></a>
        </div>
    </div>

{% endblock %}

{% block myEntityType_help %}{% endblock %}

Есть идеи?

...