Symfony2表单域:具有自定义选项名称的实体


symfony2 form field: entity with custom option name

>我使用实体作为表单字段类型,并像这样获取该下拉框的选项列表,就像一个魅力。

    $builder->add('parent', 'entity', array(
    'label' => 'Välj en fastighet för skärmen ',
    'class' => 'BizTVContainerManagementBundle:Container','property'=>'name',
    'query_builder' => function(EntityRepository $er) use ($parentType, $company) {
        return $er->createQueryBuilder('u')
            ->where('u.containerType = :type', 'u.company = :company')
            ->setParameters( array('type' => $parentType, 'company' => $company) )
            ->orderBy('u.name', 'ASC');
        },
    ));
现在,我

如何将显示名称自定义为我一起编码的名称,而不仅仅是

'property'=>'name

我最终想要做的是将当前显示的字符串与另一个字符串相结合。我实际上也想在那里获得这个实体的父级名称,例如:

option_name = $entity->getName() . ' (' . $entity->getParent()->getName() . ')' .

如果我自己构建了表单,平面 php html,那将是一件容易的事情,但由于我不喜欢做数百个沉闷的时间,所以我喜欢使用 symfony2 这些天 =)

欢迎任何意见...

修改Container类并添加返回字符串的方法(根据需要):

class Container
{
    public function getSelectLabel()
    {
        return $this->name . '(' . $this->parent->getName() . ')';
    }
}

然后将其用作property(只需将大小写替换为_后跟小写):

$builder->add('parent', 'entity', array(
    'label'    => 'Välj en fastighet för skärmen ',
    'class'    => 'BizTVContainerManagementBundle:Container'
    'property' => 'select_label',
));

所以getSelectLabel()变成了"select_label",没有"get"。