2012-04-24 38 views
0

我有一個用戶實體類,其中包含一對多的財產「交易」,持有該特定用戶的交易。Symfony2:如何在sonatabundle的configureListFields中添加一個到多個屬性字段?

​​

在後臺我有一個擴展奏鳴曲管理類

/** 
* @param \Sonata\AdminBundle\Datagrid\ListMapper $listMapper 
* @return void 
*/ 
protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
     ->add('id') 
     ->addIdentifier('username') 
     ->add('transactions') 
    ; 
} 

的userAdmin類如果我這樣做,我得到以下錯誤:

An exception has been thrown during the rendering of a template ("You must define an associated_tostring option or create a Project\MyBundle\Entity\Transaction::__toString method to the field option transactions from service gd_admin.customer_details is ") in SonataDoctrineORMAdminBundle:CRUD:list_orm_one_to_many.html.twig at line 17.

不理解怎麼辦我在用戶列表頁面中提供用戶交易的鏈接。任何幫助都會非常棒。

謝謝。

回答

3

您需要在Transaction類中實現__toString()方法。它應該返回一個有意義描述事務的字符串。 Symfony會自動調用這個方法來獲取對用戶顯示的事務的描述。下面是一個示例實現我在我的項目之一用於用戶等級:

public function __toString() 
{ 
    return ($this->firstName . ' ' . $this->lastName); 
} 

最好的問候, Champika

0

所有你所能做的就是指定在實體function __toString()或者你有另一種選擇在現場規範可以說應該用什麼屬性作爲標題的實體,像這樣:

$listMapper 
    ->add('id') 
    ->addIdentifier('username') 
    ->add('transactions', null, array('associated_property' => 'transaction_name')) 
; 

這一切都是假設你已經申請在叫實體,或者您可以使用該ID。

相關問題