2012-08-14 74 views
2

我運行此代碼以獲得我的選擇控件並且工作正常。如何更改symfony2窗體中的選項名稱select元素

$builder 
     ->add('access', 'entity', array(
      'label' => 'Behörigheter', 
      'multiple' => true, // Multiple selection allowed 
      'expanded' => true, // Render as checkboxes 
      'property' => 'name', 
      'class' => 'BizTV\ContainerManagementBundle\Entity\Container', 
      'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) { 
       $qb = $er->createQueryBuilder('a'); 
       $qb->innerJoin('a.containerType', 'ct'); 
       $qb->where('a.containerType IN (:containers)', 'a.company = :company'); 
       $qb->setParameters(array('containers' => array(1,2,3,4), 'company' => $company)); 
       $qb->orderBy('ct.id', 'ASC'); 

       return $qb; 
      } 
     )); 

現在我希望能夠定製自己標註的複選框,我學會了就在幾天前,通過在實體改變屬性select_label和界定功能,您可以做到這一點,但此查詢它不起作用。

這是因爲我加入嗎?有沒有辦法完成它?

這是行不通

$builder 
     ->add('access', 'entity', array(
      'label' => 'Behörigheter', 
      'multiple' => true, // Multiple selection allowed 
      'expanded' => true, // Render as checkboxes 
      'property' => 'select_label', 
      'class' => 'BizTV\ContainerManagementBundle\Entity\Container', 
      'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($company) { 
       $qb = $er->createQueryBuilder('a'); 
       $qb->innerJoin('a.containerType', 'ct'); 
       $qb->where('a.containerType IN (:containers)', 'a.company = :company'); 
       $qb->setParameters(array('containers' => array(1,2,3,4), 'company' => $company)); 
       $qb->orderBy('ct.id', 'ASC'); 

       return $qb; 
      } 
     )); 

在實體代碼我有:

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

它工作正常的,有一個選擇(單選)控制的另一種形式,但不是這個...

我得到的錯誤是

致命錯誤:致電成員函數getName()在/var/www/biztv_symfony/src/BizTV/ContainerManagementBundle/Entity/Container.php上的非對象在線190

+1

實體中的屬性名稱是否爲真select_label?請記住,您必須指定屬性屬性的PHP屬性名稱,而不是數據庫名稱 – Timo 2012-08-15 08:13:12

+0

放置實體的代碼。你在這個實體中有名爲'getSelectLabel()'的方法嗎? – Munir 2012-08-15 14:38:29

+0

上面更新了問題 – 2012-08-16 22:09:10

回答

0

哦,對不起,我有一些對象在那裏沒有'沒有$ this-> parent定義,我重寫了我的名字函數,如下所示,它工作正常。

public function getSelectLabel() 
{ 
    if (isset($this->parent)) { 
     return $this->name . ' (' . $this->parent->getName() . ')'; 
    } 
    else { 
     return $this->name; 
    } 
} 

謝謝大家!

相關問題