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