0

Prestashop Web サービス経由で PHP を使用して、prestashop->customers->customer->id_default_group の値を自動的に更新する必要があります。スクリプトは新しい値を認識しており、ページの読み込み前/読み込み時に実行されます。

顧客レコードを取得できます。または、顧客レコードの「id_default_group」だけを取得できますが、レコードの値を変更して Web サービスを更新しようとすると、問題が発生します。「HTTP/1.1 400 Bad Request」が返ってきます。

xml またはオブジェクトを誤って更新しようとしているようです。

「id_default_group」のみを取得して更新し、完全な顧客レコードを取得する必要がないことで、これらすべてを行うことが望ましいでしょう。

私は持っている:

define('DEBUG', true);
define('PS_SHOP_PATH', 'http://www.site.com/');
define('PS_WS_AUTH_KEY', 'yuyiu');
require_once('../PSWebServiceLibrary.php');

// First : We always get the customer's list or a specific one
try
{
    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
    $opt = array('resource' => 'customers');  // Full customer record
    //$opt = array('resource'=>'customers','display'=> '[id_default_group]','filter[id]' => '['.$_SESSION["iemIdCustomer"].']'); // Customer id_default_group value
    if (isset($_SESSION['iemIdCustomer'])){
        $opt['id'] = $_SESSION['iemIdCustomer'];
    }

    $xml = $webService->get($opt);

    // The elements from children
    $resources = $xml->children()->children();
    // $resources = $xml->children()->children()->children(); // If just getting id_default_group
}
catch (PrestaShopWebserviceException $e)
{
    // Here we are dealing with errors
    $trace = $e->getTrace();
    if ($trace[0]['args'][0] == 404) echo 'Bad ID';
    else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
    else echo 'Other error';
}

// Second : We update the data and send it to the web service
if (isset($_SESSION['iemIdCustomer'])){

    // Update XML with new values
    $xml->customers->customer->id_default_group = 4;
    //$resources = $xml->children()->children()->children();

    // And call the web service
    try
    {
        $opt = array('resource' => 'customers');
        //$opt = array('resource'=>'customers','display'=> '[id_default_group]','filter[id]' => '['.$_SESSION["iemIdCustomer"].']');
        $opt['putXml'] = $xml->asXML();
        $opt['id'] = $_SESSION['iemIdCustomer'];
        //$opt['display'] = 'id_default_group';
        $xml = $webService->edit($opt);
        // if WebService succeeds
        echo "Successfully updated.";
    }
    catch (PrestaShopWebserviceException $ex)
    {
        // Dealing with errors
        $trace = $ex->getTrace();
        if ($trace[0]['args'][0] == 404) echo 'Bad ID';
        else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
        else echo 'Other error<br />'.$ex->getMessage();
    }
}

知っている人にとっては基本的なことなので、参考になれば幸いです。

前もって感謝します、ランス

4

2 に答える 2

0

悪いノードを編集しているため、このエラーが発生したと思います;)試してみてください

$xml->customer->id_default_group = 4;

それは大丈夫なはずです:)

于 2013-08-14T08:06:39.340 に答える