2017-04-04 8 views
1

私は新しいです、そして、私はwebserviceに問題があります。ウェブサービスのプレスタシャップフィルターdate_add

私はこのエラーを取得DATE_ADDによるフィルタリングの顧客取得しようとすると:

<message><![CDATA[This filter does not exist. Did you mean: "deleted"? The full list is: "id", "id_default_group", "id_lang", "newsletter_date_add", "ip_registration_newsletter", "last_passwd_gen", "secure_key", "deleted", "passwd", "lastname", "firstname", "email", "id_gender", "birthday", "newsletter", "optin", "website", "company", "siret", "ape", "outstanding_allow_amount", "show_public_prices", "id_risk", "max_payment_days", "active", "note", "is_guest", "id_shop", "id_shop_group"]]></message> 

を、これは私のコードです:

$yesterday = date("Y-m-d H:i:s", time() - 60 * 60 * 24); 

$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); 

// Qui imposto le opzion dell'array per il Webservice: in questo caso i clienti e setto che il formato è json 
$opt = array('resource' => 'customers', 
         'filter[date_add]' => '['.$yesterday.']&date=1', 
         'display' => 'full', 
         'output_format' => 'JSON' 
         ); 

// faccio la chiamata 
$xml = $webService->get($opt); 

私がこだわっている、私は何をすべきかわかりません! !!任意のヘルプは、CustomerクラスのWebサービスパラメータを見ると

答えて

0

を高く評価され、何のDATE_ADDはありません。

protected $webserviceParameters = array(
     'fields' => array(
      'id_default_group' => array('xlink_resource' => 'groups'), 
      'id_lang' => array('xlink_resource' => 'languages'), 
      'newsletter_date_add' => array(), 
      'ip_registration_newsletter' => array(), 
      'last_passwd_gen' => array('setter' => null), 
      'secure_key' => array('setter' => null), 
      'deleted' => array(), 
      'passwd' => array('setter' => 'setWsPasswd'), 
     ), 
     'associations' => array(
      'groups' => array('resource' => 'group'), 
     ) 
    ); 

あなたはサーバーインストールへのアクセスを持っている場合、あなたはwebserviceParametersへdate_addフィールドを追加することができます。 または、動作を変更する関数getWebserviceObjectList。

サーバーのインストールにアクセスできない場合は、sortを使用して、既に入手したものに到達するまで最新の顧客を入手できます。 foreachループまたはwhileループで使用するには、limitを使用できます。

EDIT:何が起こっているのかを調べた後: まず、$webserviceParametersにフィールドdate_addを追加する必要はありません。

要求は次のようになります。

$opt = array('resource' => 'customers', 
       'filter[date_add]' => '['.$begin.','.$finish.']', 
       'date' => 1, 
       'display' => 'full', 
       'output_format' => 'JSON' 
      ); 

あなただけそれだけでその日付と一致するようにしようとするフィルタを1つの日付を追加する場合。今、それが動作するはず

$params = array('filter', 'display', 'sort', 'limit', 'id_shop', 'id_group_shop', 'date'); 

その後、ライン284でPSWebServiceLibrary.phpを変更し、フィールド「日付」を追加する必要があります。私は自分自身をテストしました。

EDIT 2: これはPSWebserviceLibrary.phpで言及した行を変更した後の完全なテストです。これは、インターバル日付のdate_addを使用して顧客を取得します。

<?php 
require_once('PSWebServiceLibrary.php'); 

echo 'starting<br />'.PHP_EOL; 

try { 
    // creating web service access 
    $webService = new PrestaShopWebservice(MY_BASE_URL, WS_KEY, true); 

    $yesterday = date("Y-m-d", time() - 60 * 60 * 24); 
    $begin = date("Y-m-d", time() - 60 * 60 * 24 * 30); 

    $opt = array('resource' => 'customers', 
         'filter[date_add]' => '['.$begin.','.$yesterday.']', 
         'date' => 1, 
         'display' => 'full', 
         'output_format' => 'JSON' 
         ); 

    //Retrieving the XML data 
    $xml = $webService->get($opt); 
} 
catch (PrestaShopWebserviceException $ex) { 
    // Shows a message related to the error 
    echo 'Other error: <br />' . $ex->getMessage(); 
} 
?> 
+0

感謝を理解し、それでもあなたにどんな考えを持っている –

+0

問題を持つことができませんか? –

+0

あなたは '' date = 1''を 'filter [date_add]'の中に持っています。代わりに配列に追加してみてください。なぜならWebサービスでは ''!($ this-> urlFragments ['date'])&& $ this-> urlFragments ['date']) '' available_fieldsからdate_addを削除するからです。 – sadlyblue

0

すべての最初の:まだ私に同じエラーを与え、感謝

は、私はあなたの指標として変更が、結果は変わりません。

protected $webserviceParameters = array(
    'fields' => array(
     'id_default_group' => array('xlink_resource' => 'groups'), 
     'id_lang' => array('xlink_resource' => 'languages'), 
     'newsletter_date_add' => array(), 
     'ip_registration_newsletter' => array(), 
     'last_passwd_gen' => array('setter' => null), 
     'secure_key' => array('setter' => null), 
     'deleted' => array(), 
     'passwd' => array('setter' => 'setWsPasswd'), 
/** inizio modifica aggiunta per il webservice */ 
     'date_add' => array(), 
/** fine della modifica */ 
    ), 
    'associations' => array(
     'groups' => array('resource' => 'group'), 
    ) 
); 

私は協力のための