如何为Symfony FormBuilder中的每个CollectionType条目设置不同的entry_options

3

我正在使用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);

我想为每个HiddenType设置一个不同的data-my-field,这样我就可以在Javascript中使用它。这是否可能?

1个回答

2

我刚遇到了同样的问题。这是我的解决方法。

首先,在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 }}
...

希望对某些人有用!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接