2012-08-08 46 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