Prestashop filter date_add in webservice



我是新手,我在使用网络服务时遇到了问题。

当我尝试检索按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);

我被困住了,我不知道该怎么办!!任何帮助都值得赞赏

查看客户类 Web 服务参数,没有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'),
)
);

如果您有权访问服务器安装,则可以将date_add字段添加到 Web 服务参数中。 或者函数getWebserviceObjectList来改变行为。

如果您无权访问服务器安装,则可以使用该sort获取最新客户,直到您找到已有的客户。您可以与limit一起使用,以便在 foreach 或 while 循环中使用。

编辑 经过一些测试和检查发生了什么: 首先,我们不需要将字段date_add添加到$webserviceParameters

请求应为:

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

如果您只向过滤器添加一个日期,它将尝试仅匹配该日期。

然后你需要在第284行更改PSWebServiceLibrary.php并添加字段'date':

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

现在它应该可以工作了。我测试了自己。

编辑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();
}
?>

首先:谢谢

我按照您的指示进行了修改,但结果没有改变,仍然给我同样的错误。

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'),
)
);

我无法理解

最新更新