symfony2实体选择标签显示

时间:2014-01-09 14:32:27

标签: symfony

我将此Symfony表单与 ManyToMany 关系正常工作,它会在实体name上显示属性Party的所有参与方。

提交后,它会根据所选方确认数据库,并检索被邀请参加这些方的人员。

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('parties', 'entity', array(
                'class' => 'ProtoBundle:Party',
                'multiple' => true,
                'expanded' => false,
                'property' => 'name',
                'required' => false,));
}

带参数

'multiple' => 'true,

所有参与方同时显示在选择下拉框中(不是我想要的)。

我想要的只是一个带参数的选择标签

'empty_value' => 'choose a party'

,然后当用户点击它时,显示值。实际上我可以用参数

来做到这一点
'multiple'=> false,

但问题是我收到此错误消息:

  

属性“party”或方法“setParties()”,“__ set()”或“__call()”之一都不存在,并且在“Acme \ ProtoBundle \ Entity \ Person”类中具有公共访问权限。

有谁知道如何使这个选择标签工作并为我提供详细的解决方案?

1 个答案:

答案 0 :(得分:1)

首先,你应该考虑到如果你想要简单的选择框而没有多重选择你真的需要多对多的关系。

但是......

在实体中你必须检查是否有值是数组,就是这样:

public function setParties($parties) 
{
    if (!is_array($parties)) {
        $parties = array($parties);
    }
    $this->parties = $parties;
}