我有一个带有另一个应用程序引用字段的项目。呼叫已分配了客户。
我使用此库:http : //podio.github.io/podio-php/
我关注了这篇文章:http : //podio.github.io/podio-php/fields/
我想通过更改引用另一个应用程序的字段的item_id来更新现有项目。该ITEM_ID已经存在于其他应用程序。
这是我尝试过的方法(触发Webhook时会发生这种情况):
$item = PodioItem::get($_POST['item_id']);
$item->fields['client']->values = array(
array('item_id' => $id_client)
);
$item->save(array(
'hook' => false,
'silent' => true
));
和
$item = PodioItem::get($_POST['item_id']);
$item->fields['client']->values = array('item_id' => $id_client);
$item->save(array(
'hook' => false,
'silent' => true
));
其中“ client”是字段的外部ID,$ id_client是整数。这是我得到的错误:
[18-Aug-2014 17:33:30 UTC] PHP Notice: Indirect modification of overloaded property PodioItem::$field has no effect in /home1/magikweb/public_html/dev/magik-net/helpdesk/webhook/call.php on line 66
[18-Aug-2014 17:33:30 UTC] PHP Warning: Creating default object from empty value in /home1/magikweb/public_html/dev/magik-net/helpdesk/webhook/call.php on line 66
如果有人可以向我解释为什么这行不通,我将非常感激。提供的文档在该主题上不清楚。
谢谢!
解决方案
我让它以这种方式工作,归功于Andreas:
if(!isset($item->fields['client']->values[0]->item_id)){
$item->fields['client'] = new PodioAppItemField();
$item->fields['client']->values = array(
array('item_id' => $id_client)
);
$item->save(array(
'hook' => false,
'silent' => true
));
}
您收到此错误是因为client
您的商品尚不存在该字段。因此,您正在尝试设置values
不存在的内容。
您需要执行以下操作(未经测试,但应该可以工作):
$item = PodioItem::get($_POST['item_id']);
if (!isset($item->fields['client'])) {
$item->fields['client'] = new PodioAppItemField();
}
$item->fields['client']->values = array(
array('item_id' => $id_client)
);
$item->save(array(
'hook' => false,
'silent' => true
));
当您从Podio获得商品时,您将不会获得应用程序中的所有字段,只有那些具有该特定商品价值的字段。因此,在尝试为其设置值之前,必须检查您的特定字段是否存在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句