У меня есть контактная форма Symfony 3.3, которая отправляет электронное письмо, и я хочу разрешить необязательную загрузку нескольких вложений.
Я пытаюсь адаптировать https://symfony.com/doc/3.3/form/form_collections.html под свои нужды.
Соответствующая часть моего formBuilder выглядит так:
->add('attachments', 'collection', array(
'entry_type' => FileType::class,
'entry_options' => array(
'required' => false,
'allow_add' => true,
),
));
... и я только что изменил свой шаблон Twig, чтобы он выглядел так ...
<div>
<ul class = "attachments" data-prototype = "{{ form_widget(form.attachments.vars.prototype)|e('html_attr') }}">
{% for attachment in form.attachments %}
<li>{{ form_widget(attachment) }}</li>
{% endfor %}
</ul>
</div>
... в этот момент загрузка моей страницы приводит к следующему сообщению:
Key "prototype" for array with keys "value, attr, form, id, name, full_name, disabled, label, label_format, multipart, block_prefixes, unique_block_prefix, translation_domain, cache_key, errors, valid, data, required, size, label_attr, compound, method, action, submitted, sonata_admin_enabled, sonata_help, sonata_admin, horizontal_label_class, horizontal_label_offset_class, horizontal_input_wrapper_class, allow_add, allow_delete" does not exist.
Что я здесь делаю не так?






Перемещение свойства allow_add на более высокий уровень помогло. Итак, теперь у меня есть:
->add('attachments', 'collection', array(
'entry_type' => FileType::class,
'entry_options' => array(
'required' => false,
),
'allow_add' => true,
));
Это может вам помочь, попробуйте обратиться к документу: Коллекция форм Symfony
<ul data-prototype = "{{ form_widget(form.attachments.vars.prototype)|e('html_attr') }}">
{{ form_widget(form.tags.vars.prototype.name)|e }}
...
</ul>
Или же
<div>
<ul>
{% for attachment in form.attachments %}
<li>{{ form_row(attachment.name) }}</li>
{% endfor %}
</ul>
</div>
Также обратитесь к этому документу