2

我在 sytem>import/export>import 下使用 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 回答