5

この質問に対する明確な解決策をオンラインで検索しようとしましたが、初心者向けの具体的な解決策は実際にはありません.

多くの EntryListing を持つ Entry があります。私の EntryAdmin listMapper では、次のような簡単なステートメントでエントリを快適にリストできます。

->add('listings')

これは、EntryListing __toString() 関数で定義されたリストを単純に返します。

以下のように getExportFields() 関数をオーバーライドして、データをエクスポートするときに同じことを達成する方法はありますか?

public function getExportFields()
{
    return array('name','tel','email','deviceType','postedOn','createdAt','facilitator','listings');
}

あなたの助けは非常に高く評価されます

4

1 に答える 1

7

エンティティにプロパティを追加して、それに関連するすべてのエントリ リストを取得し、ゲッター関数で関連するものを返すことができる別の回避策があります。__toString()注文についても同じシナリオがあり、製品が注文に関連付けられている場合はリストも必要です。エンティティで作成することにより、この方法でそれをexportProducts行いましたorders

protected $exportProducts;

public function getExportProducts()
{
    $exportProducts = array();
    $i = 1;
    foreach ($this->getItems() as $key => $val) {
        $exportProducts[] = $i . 
           ') Name:' . $val->getProduct()->__toString()() . 
           ' Size:' . $val->getProductsize() .
           .../** Other properties */;
        $i++;
    }
    return $this->exportProducts = join(' , ', $exportProducts);
}

そして、管理クラスの順序で、exportProductsプロパティを次のgetExportFields()ように定義しました

public  function getExportFields(){
    return array(
        'Products'=>'exportProducts',
         ....// Other properties
        );
}

ダウンロードした csv には、各注文のProductsセルの下に製品のリストがコンマ区切りのリストとして含まれています

于 2014-12-22T05:45:46.090 に答える