2

システム>インポート/エクスポート>インポートでmagentoのデフォルトの製品インポート機能を使用しています

ファイルをアップロードしてデータのチェックボタンをクリックすると、ページが ajax を呼び出し、エラーが返されます

Fatal error: Call to a member function getName() on a non-object in /var/www/html/app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php on line 390

コア ファイルにカスタマイズはありませんでした。

私がやったこと:1)ImportExportモジュール全体を新しいモジュールに置き換えました2)同様の問題をいくつか見つけ、その解決策がインデックス作成の問題がある可能性があると言っていたので、すべてのフラットテーブルを切り捨てて再作成しましたすべてのインデックス

ありがとう

4

2 に答える 2

3

手遅れであることはわかっていますが、解決策を求めてここに到着した人にとっては. ここに代替案があります:-

関数保護関数 _initCategories() で、次のコードを見つけてください:-

$path[] = $collection->getItemById($structure[$i])->getName();

コメントして、そこに次のコードを配置してください:-

$category123 = Mage::getModel('catalog/category')->load($structure[$i]);
$path[] = $category123->getName();

それはあなたのために働くでしょう。

于 2014-03-06T10:12:50.223 に答える
1

バージョン 1.7.1 によると、このエラー_initCategories関数があります。

protected function _initCategories()
    {
        $collection = Mage::getResourceModel('catalog/category_collection')->addNameToResult();
        /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
        foreach ($collection as $category) {
            $structure = explode('/', $category->getPath());
            $pathSize  = count($structure);
            if ($pathSize > 1) {
                $path = array();
                for ($i = 1; $i < $pathSize; $i++) {
                    $path[] = $collection->getItemById($structure[$i])->getName();
                }
                $rootCategoryName = array_shift($path);
                if (!isset($this->_categoriesWithRoots[$rootCategoryName])) {
                    $this->_categoriesWithRoots[$rootCategoryName] = array();
                }
                $index = implode('/', $path);
                $this->_categoriesWithRoots[$rootCategoryName][$index] = $category->getId();
                if ($pathSize > 2) {
                    $this->_categories[$index] = $category->getId();
                }
            }
        }
        return $this;
    }

に有効なエンティティ ID が必要です$structure[$i]。つまり、 catalog_category_entityテーブルには、有効な が存在する必要がありますentity_id

ここで 1.6.2 バージョンでも同様の問題が発生しています。

于 2013-03-08T07:23:44.483 に答える