Magento - вызов неопределенного метода Mage_Catalog_Model_Product_Type_Simple :: getConfigurableAttributesAsArray - PullRequest
3 голосов
/ 18 июля 2011

У меня появляется следующая ошибка, когда я обращаюсь к конфигурируемому продукту, используя метод saveRow из /app/code/local/Mage/Catalog/Model/Convert/Adapter/Productimport.php:

[05-Jul-2011 18:12:32] PHP Fatal error:  Call to undefined method Mage_Catalog_Model_Product_Type_Simple::getConfigurableAttributesAsArray() in /home/gp/public_html/app/code/local/Mage/Catalog/Model/Convert/Adapter/Productimport.php on line 107

Моя проблема немного отличается от других, с которыми я сталкивался в Интернете, возможно, в том, что я звоню saveRow() из своего собственного сценария, который создает и поддерживает список продуктов, загруженных из моего поставщика через xml feed, в временную базу данных, прежде чем использовать magento , чтобы добавить или обновить их в каталоге моего сайта.

require_once($_SERVER['DOCUMENT_ROOT']."/app/code/local/Mage/Catalog/Model/Convert/Adapter/Productimport.php");
$MageProducts = new Mage_Catalog_Model_Convert_Adapter_Productimport();
...
...
foreach($products as $product) {
    $result = $MageProducts->saveRow($product);
}

При первом обращении к настраиваемому продукту я получаю эту ошибку, но если я сразу же нажимаю обновить, скрипт запускается сразу после этого продукта и до самого конца, пропуская множество простых / настраиваемых наборов продуктов на своем пути, без сбоев .

Строка 107 ProductImport.php - это строка

$cspa  = $product->getTypeInstance()->getConfigurableAttributesAsArray($product);

По какой-то причине $product->getTypeInstance возвращает Mage_Catalog_Model_Product_Type_Simple, но только в первый раз за сеанс?!

Если я добавлю print_r($product->getTypeInstance()) непосредственно перед этой строкой, я получу следующее для конфигурируемого продукта

Mage_Catalog_Model_Product_Type_Simple Object ( [_product:protected] => Mage_Catalog_Model_Product Object ( [_cacheTag:protected] => catalog_product [_eventPrefix:protected] => catalog_product [_eventObject:protected] => product [_canAffectOptions:protected] => [_typeInstance:protected] => Mage_Catalog_Model_Product_Type_Simple Object *RECURSION* [_typeInstanceSingleton:protected] => Mage_Catalog_Model_Product_Type_Configurable Object ( [_usedProductAttributeIds:protected] => _cache_instance_used_product_attribute_ids....

Что явно не так ...

Я хочу иметь возможность использовать мой скрипт через cron, но эта ошибка мешает мне сделать это, поэтому мне отчаянно нужна помощь для исправления - кто-нибудь может дать какой-нибудь совет?

Ответы [ 2 ]

5 голосов
/ 10 февраля 2015

До этого:

$product->getTypeInstance()->getConfigurableAttributesAsArray($product);

Проверка $product->isConfigurable();.Если это так, запустите только:

$product->getTypeInstance()->getConfigurableAttributesAsArray($product);
0 голосов
/ 04 сентября 2014

Я знаю, что об этом спрашивали давно, но все же для тех, кто столкнется с этой проблемой в будущем. Я боролся почти неделю и попробовал другое решение, найденное в Интернете. Наконец, здесь мы уходим, проблема заключалась в том, что у меня был простой продукт с тем же номером SKU, что и конфигурируемый продукт, который я пытался импортировать.

...