当我使用/app/code/local/Mage/Catalog/Model/Convert/Adapter/Productimport.php
中的saveRow
方法点击可配置产品时,出现以下错误:
[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);
}
当我第一次点击可配置产品时,我会得到这个错误,但是如果我立即点击刷新,脚本会直接运行经过该产品,一直运行到最后,在其过程中传递许多简单/可配置的产品集,而不会失败。
ProductImport.php的第107行就是这一行
$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使用我的脚本,但是这个错误阻止了我这样做,所以我迫切需要一些帮助来修复-有人能提供一些建议吗?
3条答案
按热度按时间9njqaruj1#
在此之前:
检查
$product->isConfigurable();
。如果是,则仅运行:xuo3flqw2#
我知道这是问了很久以前,但仍然为任何人谁面临这个问题在未来。我挣扎了几乎一个星期,并尝试不同的解决方案在互联网上找到。最后在这里,我们去,问题是我有一个简单的产品与相同的sku作为可配置的产品,我试图导入。
dgenwo3n3#
这只适用于可配置项,因此,首先检查产品是否可使用以下代码进行配置: