Php Symfony如何创建空选择(ChoiceType)?

Php Symfony如何创建空选择(ChoiceType)?,php,forms,symfony,Php,Forms,Symfony,我在Symfony 2.8上。我有电影实体,它有演员实体(许多)。最近我意识到,当数据库中有很多参与者时,我在创建实体时会遇到一个问题,所以我想在Actor字段中使用ajax自动完成器。在管理端(Sonata)没有问题,但在用户端,我使用PUGXAutoCompleterBundle失败(不支持ManyToMany) 我创建了一个API操作,它返回JSON,参与者与搜索字符串匹配,我想使用select2,但在表单构建阶段我遇到了一个问题。 我想做尽可能少的更改,这样我以前的createActio

我在Symfony 2.8上。我有
电影
实体,它有
演员
实体(
许多
)。最近我意识到,当数据库中有很多参与者时,我在创建实体时会遇到一个问题,所以我想在
Actor
字段中使用ajax自动完成器。在管理端(Sonata)没有问题,但在用户端,我使用PUGXAutoCompleterBundle失败(不支持
ManyToMany

我创建了一个API操作,它返回JSON,参与者与搜索字符串匹配,我想使用select2,但在表单构建阶段我遇到了一个问题。 我想做尽可能少的更改,这样我以前的createAction就可以工作了。不幸的是,我不能创建空的SELECT,然后用Select2填充它。当我这样做时:

->add('actors', ChoiceType::class)
(或使用
'empty_value'=>true
,或使用
'choices'=>[]'
),我得到:

我假设这是因为
actors
字段存在于
Movie
实体中,它应该是
Actor
实体的
ArrayCollection
,而不是上帝知道什么。在我看来,我发现了两个丑陋的解决办法:

  • 添加
    query\u builder
    ,它将始终返回空集(如
    其中false=true
    )。啊
  • 添加
    'mapped'=>false
    ,但我不知道,它将在提交后生成正确的表单数据

  • 我应该如何解决这个问题呢?

    我会选择表单字段中的
    'mapped'=>false
    'choices'=>[]
    。事实上,您不想将其直接映射到您的实体。@PawełMikołajczuk:是的,它在前端工作,但随后
    $form->isValid()
    返回false…在探查器中检查哪些字段正在中断。有什么问题吗,谢谢。不幸的是,正如你在问题35604335中看到的那样,我已经没有想法了
    The value of type "object" cannot be converted to a valid array key.