【问题标题】:How to set different entry_options for each CollectionType entry in Symfony FormBuilder如何在 Symfony FormBuilder 中为每个 CollectionType 条目设置不同的 entry_options
【发布时间】:2019-01-08 17:16:40
【问题描述】:

我正在尝试使用CollectionType 在表单生成器中创建多个HiddenType 字段,以便在我在控制器中处理这些字段时对它们进行分组。但我希望每个字段都有不同的属性。是否可以使用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 中使用它。有可能吗?

【问题讨论】:

    标签: php symfony formbuilder symfony-2.8


    【解决方案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 }}
    ...
    

    希望它对某人有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      相关资源
      最近更新 更多