catalogProductUpdate多个类别ID

时间:2015-05-13 23:47:18

标签: php magento

我正在尝试更新Magento中许多产品的网站和类别ID,但我遇到了问题。这是我的代码:

$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");

foreach ($productarray as $product_id => $cats) {
    $update = array(
                'websites' => array(1,2,3), 
                'categories' => array($cats)
            );
    $updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}

当我运行此代码时,它正在更改产品以获得新的网站ID,但它只更新了$ cats中的第一个类别ID。

例如,“12345”只有类别ID 1而不是2或3。

当我打印出每只产品的$ cats时,它会正确显示信息(如上例所示为“1,2,3”和“1,5,6”)。

我不确定我做了什么,但我似乎无法更新所有类别ID。我已经有数千种产品可以运行,所有产品都有不同的类别ID,所以我不能手动执行此操作!

编辑 - 已解决

我已经更改了我的代码,所以它现在就像这样(有效):

$client = new SoapClient('http://magentohost/api/v2_soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$productarray = array("12345" => "1,2,3", "67890" => "1,5,6");

foreach ($productarray as $product_id => $cats) {
    $cats = explode(",", $cats);
    $update = array(
                'websites' => array(1,2,3), 
                'categories' => $cats
            );
    $updatewebsite = $client->catalogProductUpdate($session,$product_id,$update);
}

1 个答案:

答案 0 :(得分:1)

categories属性需要一个ID数组,而你传递一个字符串。尝试使用std::function将其分解:

explode()