2012-08-08 60 views
1

我使用表单字段类型的实体,并获得我的下拉列表选项列表,像这样的魅力。symfony2表单字段:使用自定义选项名称的实体

$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的这些天使用=)

任何输入欢迎...

回答

4

修改您的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”,没有 “得到”。

+0

你几乎让我哭了,Symfony2是一个梦。这个论坛也是如此。非常感谢! – 2012-08-08 23:09:29

+0

@MattiasSvensson,有时也是一场噩梦:)不客气... – gremo 2012-08-08 23:12:35

+1

带下划线的建议不正确。你应该喜欢像这样离开套管:''property'=>'selectLabel'' – 2012-08-09 20:21:15