2013-01-04 69 views
2

我正在使用magento 1.7。我有問題,我不知道爲什麼會發生這種情況。然後我在後臺的編輯只開放式產品點擊複製然後,我就當我嘗試下面的代碼調試文件下列錯誤嘗試複製產品時出現Magento錯誤

Warning: Illegal string offset 'new_file' in D:\wamp\www\easyshop\app\code\core\Mage\Catalog\Model\Product\Attribute\Backend\Media.php on line 158 

print_r($newImages); 
die; 

然後我得到這個以下數據

Array 
(
    [/s/a/samsung_galaxy_s2_front1.jpg] => /s/a/samsung_galaxy_s2_front1_4.jpg 
    [/s/g/sgs2p1.jpg] => /s/g/sgs2p1_4.jpg 
    [/s/g/sgs2_11.jpg] => /s/g/sgs2_11_4.jpg 
    [/s/g/sgs2-4386.jpg] => /s/g/sgs2-4386_4.jpg 
) 

我東西陣列鍵是錯的,請你給解決方案來解決這個問題

+0

也許是因爲你在Windows上運行它,而Magento在Windows上不受支持? – Kenny

+0

我可以確認這發生在OS X上。 – Dayson

回答

7

我在1.7.02有同樣的問題。我找到的解決方案是改變Magento(IMHO)竊聽代碼。

在Mage_Catalog_Model_Product_Attribute_Backend_Media我已經改變了線路,你發現:

 // For duplicating we need copy original images. 
     $duplicate = array(); 
     foreach ($value['images'] as &$image) { 
      if (!isset($image['value_id'])) { 
       continue; 
      } 
      $duplicate[$image['value_id']] = $this->_copyImage($image['file']); 
      $newImages[$image['file']] = $duplicate[$image['value_id']]; 
     } 

爲:

 // For duplicating we need copy original images. 
     $duplicate = array(); 
     foreach ($value['images'] as &$image) { 
      if (!isset($image['value_id'])) { 
       continue; 
      } 
      $duplicate[$image['value_id']] = $this->_copyImage($image['file']); 
      $newImages[$image['file']] = array(); 
      $newImages[$image['file']]['new_file'] = $duplicate[$image['value_id']]; 
      $newImages[$image['file']]['label'] = $image['label']; 
     } 

它爲我做的伎倆...圖片已被正確地複製並啓用了新產品。

+1

你救了我的屁股謝謝!寫作它作爲原始類的延伸! :) – koramaiku

+0

這對我有用:在5.3.15下使用magento 1.7.0.2沒有問題。升級到php 5.5.9後出現錯誤。 magento 1.7.0.2的php 5.4補丁也無法運行。 –

+0

這工作對我1.6.2.0 –