我搜索了SO,Google和Magento论坛。这些解决方案都没有帮助。
我正在尝试通过Joomla更新产品的自定义属性!使用Magento的SOAP API V1的组件。事实上,我得到的结果表明更新成功了。
检查Magento后端时,此特定产品的任何内容都没有变化,显然是通过我的脚本更新的。
我通过Ajax请求发送值。值为100%(三重检查)。该产品存在于Magento。
我试图使用产品的SKU(数字而非数字)来做到这一点,但即使ID也给我相同的结果。
我现在的代码(我尝试了很多变体):
$data = trim($_REQUEST['badgedata']);
$sku = trim($_REQUEST['skudata']);
$update_data = array(
'additional_attributes' => array(
'single_data' => array(
array(
'badge' => $data
)
)
)
);
$mage_url = 'http://localhost/magentosite/index.php/api/soap?wsdl';
$mage_user = 'magentousername';
$mage_api_key = 'magentoapikey';
$soap = new SoapClient( $mage_url );
$session_id = $soap->login( $mage_user, $mage_api_key );
$update = $soap->call($session_id, 'catalog_product.update', array($sku, $update_data));
希望这是足够的信息。我错过了什么吗?
任何帮助将不胜感激!谢谢:))
答案 0 :(得分:1)
好的,
我在post here的帮助下解决了这个问题。修补“app / code / core / Mage / Catalog / Model / Product / Api / V2.php”
在第263行附近的某处:
if (property_exists($productData, 'additional_attributes')) {...}
放置第3个 IF 声明:
if (gettype($productData->additional_attributes) == 'array') {
foreach ($productData->additional_attributes as $k => $v) {
$_attrCode = $k;
$productData->$_attrCode = $v;
}
}
现在使用SOAP API的V2(我应该在第一时间完成* -.-)
新工作代码:
$data = trim($_REQUEST['badgedata']);
$sku = trim($_REQUEST['skudata']);
$update_data = array (
'additional_attributes' => array (
'single_data' => array (
array ('key' => 'badge', 'value' => $data)
)
)
);
$mage_url = 'http://localhost/magentosite/index.php/api/v2_soap?wsdl';
$mage_user = 'magentousername';
$mage_api_key = 'magentoapikey';
$soap = new SoapClient( $mage_url );
$session_id = $soap->login( $mage_user, $mage_api_key );
$update = $soap->catalogProductUpdate($session_id, $sku, $update_data);
感谢stroisi!