Как установить разные entry_options для каждой записи CollectionType в Symfony FormBuilder

Я пытаюсь создать несколько полей HiddenType в Form Builder с помощью CollectionType, чтобы сгруппировать эти поля, когда я имею дело с ними в своем контроллере. Но я хочу, чтобы у каждого поля были разные атрибуты. Можно ли использовать entry_options для установки разных параметров для каждой записи?

Я использую плагин перетаскивания javascript для размещения элементов в контейнере, когда эти элементы удаляются, код JS обновляет эти скрытые поля, которые я использую для сбора информации в моем контроллере. Поэтому обязательно, чтобы эти поля были как-то сгруппированы, чтобы я мог легко работать с ними в своем контроллере.

Пример:

$builder->add(self::FIELD_MAPPED_COLUMNS, CollectionType::class, [
    'entry_type'    => HiddenType::class,
    'data'          => ['field1', 'field2', 'field3'],
    'label'         => false,
    'entry_options' => [
        'attr' => [
            'data-my-field' => '?????'
        ]
    ]
])->add('submit', SubmitType::class);

Я хочу установить разные data-my-field для каждого HiddenType, чтобы использовать его в Javascript. Является ли это возможным?

Стоит ли изучать 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 и хотите разрабатывать...
2
0
735
1

Ответы 1

Я столкнулся с той же проблемой. Вот мой обходной путь.

Сначала добавьте шаблон в entry_options:

$builder->add(self::FIELD_MAPPED_COLUMNS, CollectionType::class, [
    'entry_type'    => HiddenType::class,
    'data'          => ['field1', 'field2', 'field3'],
    'label'         => false,
    'entry_options' => [
        'attr' => [
            'data-my-field' => '%templateForMyFieldByFieldData%'
        ]
    ]
])->add('submit', SubmitType::class);

Затем визуализируйте каждое поле коллекции по отдельности в цикле Twig и замените шаблон на необходимое значение:

...
{{ (form_widget(field) | replace('%templateForMyFieldByFieldData%', valueToInsert)) | raw }}
...

Надеюсь, это будет кому-то полезно!

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