我正在使用Web连接器与QuickBooks桌面版本进行通信,而在Web端我正在使用consolibyte https://github.com/consolibyte/quickbooks-php.现在我有一个用例,我需要使用Customer和Employee自定义字段.我能够插入,更新自定义字段,一直到现在都很好.问题就出现了,在一个consolibyte库中我们定义了所有的动作
$map = array(QUICKBOOKS_MOD_DATAEXT => array( 'employee_custom_field_request',
'employee_custom_field_response',
'customer_custom_field_request',
'customer_custom_field_response'
)
现在如果我只需要更新员工自定义字段,我会将请求排入队列
$Queue = new QuickBooks_WebConnector_Queue('MysqLi://username:password@localhost/quickbook'); $Queue->enqueue(QUICKBOOKS_MOD_DATAEXT, $id);
因此,每当我运行Web连接器时,客户和员工自定义字段都会请求&响应函数将被调用,那么我应该如何编写只调用特定实体函数(客户或员工)?或者在consolibyte库中有什么方法可以区分它的调用吗?
解决方法:
这里有几个选项 –
这些常量QUICKBOOKS_MOD_DATAEXT完全是任意的.例如你可以这样做:
$Queue->enqueue('CustomFieldForCustomer', $id);
$Queue->enqueue('CustomFieldForEmployee', $another_id);
你可以在那里使用你想要的任何东西,只要你在 – > enqueue(…)的调用中匹配你的$map中的东西.所以只需要编写一些新的常量.
另一种选择是传递额外的额外数据.例如.:
$Queue->enqueue(QUICKBOOKS_MOD_DATAEXT, $your_id, null, array( 'this_is_for_a' => 'customer' );
function CUSTOMER_OR_EMPLOYEE_custom_field_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $xml, $idents)
{
if ($extra['this_is_for_a'] == 'customer')
{
// ... do something for customers
}
else
{
// ... do something for employees
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。