我将一些数据发送到SalesForce,但是我遇到了一些问题,这些问题的目的地是多选。我不相信这是针对Salesforce的,所以我在这里发布了这个问题。
这是我目前的剧本:
<?php
if($_POST['cis'] == '1'){
$query['00ND0000003viLy'] = array(
'Essential',
'CIS'
);
}else{
$query['00ND0000003viLy'] = 'Essential';
}
foreach ( $query as $key => $value) {
$post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'xxx');
curl_setopt($curl, CURLOPT_POST, count($post_items));
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
?>
在SalesForces&#39;结束$query['00ND0000003viLy']
的值最终以字符串形式Array
(当它与条件匹配时)。
如何为$query['00ND0000003viLy']
分配多个值,以便将其解释为多次选择?
答案 0 :(得分:1)
好吧事实证明这可能是特定于销售人员的事情,tl; dr是值必须是单个字符串并且用分号分隔。所以这是我的例子给出的工作代码:
if($_POST['cis'] == '1'){
$query['00ND0000003viLy'] = 'Essential; CIS';
}else{
$query['00ND0000003viLy'] = 'Essential';
}
对于需要更动态解决方案的其他人来说,沿着这些方向应该做的事情:
join(';', $query['00ND0000003viLy'])
(再次,根据我原来的例子)。
答案的关键点在这里追踪:https://developer.salesforce.com/forums/?id=906F00000008ssBIAQ
哦,@sanderbee的答案包含了一种更简洁的方式来构建查询。
答案 1 :(得分:0)
将参数添加为http查询字符串,如下所示:
$post_string = http_build_query($query);
curl_setopt($curl, CURLOPT_URL, 'xxx');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);