我想知道如何根据其他字段检索动态下拉列表的值。例如:如果“子类别”依赖于“类别”下拉列表,我如何获得“子类别”的值。
还想知道如何找到“Case”的所有字段,这些字段是提交新“Case”所必需的。我正在尝试使用phptoolkit这样做但我没有找到关于它的好文档。
答案 0 :(得分:3)
PHP工具包本质上是一个WSDL SOAP包装器,因此适用于salesforce API Web服务的任何内容都适用于PHP工具包。
以下是解决问题的程序(我没有PHP示例):
describeSObject
以检索有关对象的信息describesObjectResult.Fields
中的每个字段都有三个重要属性,creatable
,nillable
和defaultedOnCreate
。如果是可创造的而不是无法支付而且没有默认,则必须提供一个值,这将回答问题#2 picklistValues
包含PicklistEntry
元素列表。如果选项列表依赖于每个条目,则在validFor
属性中包含base64编码的位图。位置i的每个位是0或1,对应于选项列表条目是否适用于位置i处的主选项列表输入。 我可以通过javascript告诉你我是如何做到的(lstCategories
和lstSubcategories
是PickListEntry
的数组),lstApplicableSubs
创建了子类别列表对于每个类别。这应该为您提供解码方法:
var b64 = new sforce.Base64Binary("");
lstApplicableSubs = new Array(lstCategories.length);
for (var i = 0; i < lstApplicableSubs.length; i++) lstApplicableSubs[i] = new Array();
for (i = 0; i < lstSubCategories.length; i++)
{
var map = b64.decode(lstSubCategories[i].validFor);
for (var j = 0; j < lstCategories.length; j++)
{
var bits = map.charCodeAt(j >> 3);
if ((bits & (0x80 >> (j & 0x07))) != 0) lstApplicableSubs[j].push(lstSubCategories[i]);
}
}