Как установить разные entry_options для каждой записи CollectionType в Symfony FormBuilder - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать несколько полей 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. Возможно ли это?

1 Ответ

0 голосов
/ 19 июня 2019

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

Сначала добавьте шаблон в 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 }}
...

Надеюсь, это кому-нибудь пригодится!

...