【问题标题】:FormType duplicate formfield "name" conflictFormType 重复表单域“名称”冲突
【发布时间】:2017-03-03 11:33:47
【问题描述】:

我的 GameType.php 文件中声明的不同表中有两个同名的属性。

但实际上这些值并不相同,因为表列 Game.name 和 Type.name 来自不同的表。

如何在表单中同时显示它们而不发生冲突?

来自 GameType.php 的片段:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add( 'name', TextType::class, [
            'class' => 'AppBundle:Game',
            'choice_label' => 'name',
        ] );
    $builder
        ->add( 'name', EntityType::class, [
            'class' => 'AppBundle:Type',
            'choice_label' => 'name',
            'multiple' => false,
            'expanded' => false
        ] );
}

它们都被称为“名称”,这会导致类型的选择框覆盖游戏的文本字段。 我调用了小部件,但这不起作用,因为它们都被称为“名称”:

{{ form_widget(form.name) }}

【问题讨论】:

    标签: php forms symfony symfony-forms


    【解决方案1】:

    为什么不更改实体中的属性名称?如果需要,您可以在之后的视图中将它们标记为相同。

    【讨论】:

    • 我该怎么做?
    • 在您的表单构建器中,您可以将name 更改为更能代表您选择的内容。在这种情况下是 Type 。 builder->add( 'type', EntityType::class, [....])
    • 谢谢,我这样做了,现在我收到错误消息:“必须管理传递给选择字段的实体。也许将它们保留在实体管理器中?”。我注意到 Stackoverflow 上的其他人也有此错误,但我找不到解决方案。
    • @AndrewNolan 如果您将此作为您的答案,我会接受。我对错误“必须管理传递给选择字段的实体。也许将它们保留在实体管理器中?”提出了一个新问题:stackoverflow.com/questions/42587779/…
    • 您是否将 $builder-add() 方法的第一个参数更改为您的实体字段的名称?
    猜你喜欢
    • 2023-03-21
    • 2018-11-27
    • 1970-01-01
    • 2019-02-15
    • 2019-10-20
    • 2017-10-31
    • 2023-02-10
    • 2011-10-16
    • 2012-07-08
    相关资源
    最近更新 更多