EC-CBUE3.0.15
商品管理の商品CSVダウンロードで「商品カテゴリ(名称)」列があった場合、「フォーク,新入荷」のように出力されます。
これを「キッチンツール/食器/フォーク,新入荷」のように、親カテゴリごと出力したいと思っています。
下のソースのようにカスタマイズしましたが、★の箇所でOutOfMemoryExceptionが発生してしまいます。
どうしたら解決できるでしょうか?
src/Eccube/Service/CsvExportService.php
変更前
} elseif ($data instanceof \Doctrine\Common\Collections\Collection) {
// one to manyの場合は, カンマ区切りに変換する.
$array = array();
foreach ($data as $elem) {
if (EntityUtil::isNotEmpty($elem)) {
$array[] = $elem->offsetGet($Csv->getReferenceFieldName());
}
}
return implode($this->config['csv_export_multidata_separator'], $array);
} elseif ($data instanceof \DateTime) {
変更後
} elseif ($data instanceof \Doctrine\Common\Collections\Collection) {
// one to manyの場合は, カンマ区切りに変換する.
$array = array();
foreach ($data as $elem) {
if (EntityUtil::isNotEmpty($elem)) {
if ($elem instanceof \Eccube\Entity\ProductCategory) {
// 商品カテゴリ(名称) の場合は親カテゴリごと取得してスラッシュ区切りで設定
$category = $elem->getCategory();
$tmpArray = array($category->offsetGet('Name'));
do {
$parent = $category->getParent();
if ($parent) {
$tmpArray[] = $parent->offsetGet('Name'); // ★ エラー
}
} while ($parent);
$array[] = implode('/', array_reverse($tmpArray));
}
else {
$array[] = $elem->offsetGet($Csv->getReferenceFieldName());
}
}
}
return implode($this->config['csv_export_multidata_separator'], $array);
} elseif ($data instanceof \DateTime) {
----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。