【问题标题】:Prestashop Webservice Updating Carts product 'quantity' PHPPrestashop Webservice 更新购物车产品“数量”PHP
【发布时间】:2014-09-12 02:28:58
【问题描述】:

我花了很多天时间与 REST API 购物车更新功能作斗争。这就像地狱一样难,但几乎没有用。我不能只用一个变量解决一个问题。 更新所有选项时如何输入物品数量?

我知道这只是几个代码符号,但现在不知道该怎么做。

请帮帮我!

下面是我的函数:

<?php
session_start();
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://mypresta-shop.com/');
define('PS_WS_AUTH_KEY', 'GAN3F82KAA71GZRHJF9QYED7UBTFUVF6');
require_once('/home/t/katja89/shop/public_html/PSWebServiceLibrary.php');
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);


function aCart($T_id, $id_customer, $id_address, $T_action){ //aCart(17, 3, 5, 'edit');

global $webService;

 if ($T_action == 'edit') { //  cart update, item is added, but the quantity does not update

$opt = array('resource' => 'carts');
$opt['id'] = $T_id; // 17
$xml = $webService->get($opt);
$resources = $xml->children()->children()->children();

unset($xml->children()->children()->associations->cart_rows->cart_row);

        foreach ($_SESSION["products"] as $cart_itm) { 

// I take the couple $cart_itm["code"] and $cart_itm["qty"], but cannot change 'quantity' of items added from the session :(

$xml->children()->children()->associations->cart_rows->addChild('cart_row')->addChild('id_product', $cart_itm["code"]);

//$xml->children()->children()->associations->cart_rows->addChild('cart_row')->addChild('quantity', $cart_itm["qty"]);
//$xml->children()->children()->associations->cart_rows->cart_row->quantity = $cart_itm["qty"];

       }

$opt = array('resource' => 'carts');
$opt['putXml'] = $xml->asXML();
$opt['id'] = $T_id; // 17
$xml = $webService->edit($opt);

} else if  ($T_action == 'add') { // adding a new cart works

$Tovar = "";

        foreach ($_SESSION["products"] as $cart_itm)
        {
$Tovar .= "<cart_row>";
$Tovar .= "<id_product>".$cart_itm["code"]."</id_product>";
$Tovar .= "<id_product_attribute>0</id_product_attribute>";
$Tovar .= "<quantity>".$cart_itm["qty"]."</quantity>";
$Tovar .= "</cart_row>";
        }

$Tovar .= "";

//$id_address = "5";
//$id_customer = "3";

$psXML = <<<XML
<prestashop>
<cart>
  <id/>
  <id_address_delivery>{$id_address}</id_address_delivery>
  <id_address_invoice>{$id_address}</id_address_invoice>
  <id_currency>1</id_currency>
  <id_customer>{$id_customer}</id_customer>
  <id_guest>0</id_guest>
  <id_lang>1</id_lang>
  <id_carrier>0</id_carrier>
  <recyclable>0</recyclable>
  <gift>0</gift>
  <gift_message/>
  <associations>
   <cart_rows>
    {$Tovar}
   </cart_rows>
  </associations>
</cart>
</prestashop>
XML;


$xml = new SimpleXMLElement($psXML);
$opt = array( 'resource' => 'carts' );
$opt['postXml'] = $xml->asXML();
$xml = $webService->add( $opt );
}
}

我没有得到特别的错误。 在我的会话中,我持有产品 ID(购物车商品代码 - $cart_itm["code"])和数量(购物车商品数量 $cart_itm["qty"])。当用户更改这些变量时,我需要更改购物车内容。为此,我称 aCart(17, 3, 5, 'edit');功能。如果我添加新购物车 aCart(17, 3, 5, 'add'); 效果很好但我无法编辑 cart_rows。在 cart_row 数量中 $cart_itm["qty"] 与 id_product 作为 $cart_itm["code"] 连接。我无法将特定商品的 $cart_itm["qty"] 插入到 cart_row 中。

在代码中,在 foreach 行下,您会看到我尝试过的两个选项(灰色),但都不起作用。我需要更新购物车中每件商品的数量。

$xml->children()->children()->associations->cart_rows->addChild('cart_row')->addChild('id_product', $cart_itm["code"]);

效果很好,它添加了带有商品 ID 的 cart_row。但它显示数量为 0。我不知道如何让它显示 id_product ($cart_itm["code"]) 的实际数量 ($cart_itm["qty"])。

【问题讨论】:

  • 如果您添加更多信息将对我们有很大帮助,例如:您的确切问题是什么?你想让我做什么?你得到什么错误?等等……
  • @HristoValkanov 非常感谢您的回答,我用新信息编辑了顶帖

标签: php api rest prestashop


【解决方案1】:

几年后...

你可以这样做:

$row = $xml->children()->children()->associations->cart_rows->addChild('cart_row');

$row->addChild('id_product', $cart_itm["code"]);
$row->addChild('quantity', $cart_itm["qtyOrSomething"]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多