2013-03-08 18 views
2

我使用的系統正>導入/導出下Magento的默認產品導入功能>進口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)我也發現了一些類似的問題,他們的解決方案做的是說有可能被索引的問題,所以我已經截斷所有平表和重新索引所有

感謝

+0

您是否有有效的產品類別? – 2013-03-08 07:13:57

+0

@Renku是的,我有有效的類別.. – ravisoni 2013-03-08 07:18:32

回答

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版本here上看到過類似的問題。

+0

我使用的是已經創建的類別...這意味着它有有效的entity_id編號 – ravisoni 2013-03-08 07:25:18

+0

reindex你的分貝,看看是否有一個表'catalog_category_flat_store_'來了或不。然後嘗試導入。 – 2013-03-08 07:29:08

+0

感謝Renku指向我我正確的方向實際上$結構[$ i]索引包含類別id,但對於一些索引我是空白我已經添加了一個條件他們現在罰款,但沒有得到爲什麼某些索引沒有類別ID .. :-( – ravisoni 2013-03-08 07:51:17

3

我知道這太晚了,但對於那些誰來到這裏尋求解決方案。下面是可供選擇的一個: -

在功能保護功能_initCategories

(),請找到下面的代碼: -

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

只是評論它&將下面的代碼有: -

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

它會爲你工作。

相關問題