Я использую 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 %}
Есть идеи?