3

Magento のまったく新しいインストール、製品のセットアップなどで、製品の CSV をエクスポートしようとしていたところで、通常のフォームを送信すると、「有効なデータが送信されませんでした」というエラーが表示され、何が起こっているのかを確認するためにデバッグを開始しました。最初の停止は exception.log でした

Notice: Undefined index:   in /app/code/core/Mage/ImportExport/Model/Export/Entity/Product.php on line 539' in /app/code/core/Mage/Core/functions.php:245

問題を引き起こしている機能は次のとおりです。

/**
 * Update data row with information about categories. Return true, if data row was updated
 *
 * @param array $dataRow
 * @param array $rowCategories
 * @param int $productId
 * @return bool
 */
protected function _updateDataWithCategoryColumns(&$dataRow, &$rowCategories, $productId)
{
    if (!isset($rowCategories[$productId])) {
        return false;
    }

    $categoryId = array_shift($rowCategories[$productId]);
    $dataRow[self::COL_ROOT_CATEGORY] = $this->_rootCategories[$categoryId];
    if (isset($this->_categories[$categoryId])) {
        $dataRow[self::COL_CATEGORY] = $this->_categories[$categoryId];
    }

    return true;
}

$rowCategories が配列ではないため、何らかの理由で $categoryId が設定されません。

念のためインデックス管理を再実行しましたが、カテゴリなどに問題があるようです。続行する前に $categoryId が設定されていることを確認することで簡単に解決できることはわかっていますが、そもそもエラーの原因を知りたいです。

4

3 に答える 3

9

magento からの修正までは、以下のファイルを複製できます。
local/Mage/ImportExport/Model/Export/Entity/Product.php

534 行目を次のように変更します。

if (!isset($rowCategories[$productId])) {
    return false;
}

if (!isset($rowCategories[$productId]) or empty($rowCategories[$productId])) {
    return false;
}
于 2013-01-08T23:01:21.310 に答える
2

私も同じ問題を抱えていました。1 つの製品のみをエクスポートしようとしていたため、修正は簡単でした。製品をカテゴリに追加しただけです。

于 2012-10-15T12:58:44.050 に答える