Ключевого «прототипа» не существует

У меня есть контактная форма 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.

Что я здесь делаю не так?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
903
2

Ответы 2

Перемещение свойства 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>

Также обратитесь к этому документу

Другие вопросы по теме