当我使用以下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
Run Code Online (Sandbox Code Playgroud)
我的问题与我在网上遇到的其他人有点不同,也许是因为我正在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);
}
Run Code Online (Sandbox Code Playgroud)
我第一次点击可配置的产品时遇到了这个错误,但是如果我立即点击刷新,脚本会直接运行到该产品并一直到最后,在路上传递许多简单/可配置的产品集,而不会失败.
ProductImport.php的第107行就是这一行
$cspa = $product->getTypeInstance()->getConfigurableAttributesAsArray($product);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它$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] => …Run Code Online (Sandbox Code Playgroud)