Magento:基本导入中的致命错误

时间:2013-03-08 07:07:18

标签: php magento

我在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模块替换了整个ImportExport模块 2)我也发现了一些类似的问题并完成,因为他们的解决方案是说可能存在索引问题所以我截断了所有的平面表并重新索引所有

谢谢

2 个答案:

答案 0 :(得分:3)

我知道现在为时已晚,但对于那些来到这里寻求解决方案的人来说。这是另一种选择: -

在函数保护函数_initCategories()中,请找到以下代码: -

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

只是评论它&将以下代码放在那里: -

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

它适用于你。

答案 1 :(得分: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;
    }

您应该在$structure[$i]拥有有效的实体ID。即在catalog_category_entity表中,应该有一个有效的entity_id

我已经看到1.6.2版本here的类似问题。