2012-04-24 5 views
0

私は、その特定のユーザーのトランザクションを保持する1対多のプロパティ "transactions"を含むUser Entityクラスを持っています。Symfony2:sonatabundleのconfigureListFieldsの1つのプロパティフィールドに1つずつ追加するにはどうすればいいですか?

私はソナタ管理クラスを拡張USERADMINクラスを持っているバックエンドで​​

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

私はこれを行う場合、私は次のエラーを取得する:

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はこのメソッドを自動的に呼び出して、ユーザに対して表示されるトランザクションの説明を取得します。私は私のプロジェクトの一つでUserクラスに使用実装例を次に示します。

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')) 
; 

これは、すべてあなたがでtransaction_name呼ば提出したと仮定していますエンティティまたはIDだけを使用できます。

関連する問題