在salesforce phptoolkit中如何获取动态下拉值

在salesforce phptoolkit中如何获取动态下拉值,php,soap,salesforce,Php,Soap,Salesforce,我想知道如何检索基于其他字段的动态下拉列表的值。例如:如果“子类别”依赖于“类别”下拉列表,则如何获取“子类别”的值 还想知道如何找到提交新“案例”所需的所有“案例”字段。我试图使用phptoolkit来实现这一点,但是我没有找到关于它的好文档 PHP toolkit本质上是一个WSDL SOAP包装器,因此任何适用于salesforce API web Service的内容都适用于PHP toolkit 以下是解决问题的过程(我没有PHP示例): 调用descripesObject以检索有关该

我想知道如何检索基于其他字段的动态下拉列表的值。例如:如果“子类别”依赖于“类别”下拉列表,则如何获取“子类别”的值

  • 还想知道如何找到提交新“案例”所需的所有“案例”字段。我试图使用phptoolkit来实现这一点,但是我没有找到关于它的好文档


  • PHP toolkit本质上是一个WSDL SOAP包装器,因此任何适用于salesforce API web Service的内容都适用于PHP toolkit

    以下是解决问题的过程(我没有PHP示例):

  • 调用
    descripesObject
    以检索有关该对象的信息
  • 中的每个字段都描述ObjectResult。字段
    有三个重要属性,
    可创建
    可nillable
    默认不创建
    。如果可创建且不为零且不为默认值,则必须提供一个值,这将回答问题2
  • 如果字段类型为picklist或multipcklist,则字段“
    picklistValues
    包含
    PicklistEntry
    元素的列表。如果picklist是独立的,则每个条目在
    validFor
    属性中都包含一个base64编码位图。位置i处的每个位为0或1,对应于拾取列表条目是否适用于位置i处的主拾取列表条目
  • 您必须对位图进行解码,并使用它来确定此特定条目可用于哪些主选取列表条目。不幸的是,现在这是唯一的办法
  • 我可以用javascript为您提供一个示例,说明我是如何做到这一点的(
    lstcegories
    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]);
            }
        }
    
    var b64=new sforce.Base64Binary(“”);
    lstApplicatableSubs=新数组(lstCategories.length);
    对于(var i=0;i>3);
    如果((位和(0x80>>(j&0x07))!=0)lstApplicableSubs[j].push(lstSubCategories[i]);
    }
    }
    
    @mmix:谢谢你让我知道,我从来不知道你必须接受最终答案。我以为投票最多的那个是最后的答案,我总是试着投票,但不能,因为我是新手。即使是新手,你也可以接受你问题的答案。你需要20个代表来投票,我相信你现在已经做到了。很高兴在这里见到您,希望您留下来。我的另一个问题是,如果creatable、nillable和defaultedOnCreate all设置为“1”,是否需要字段?或者它们中的任何一个设置为“1”?creatable意味着您可以在INSERT DML中为其指定值,如果0您根本无法指定它(例如,公式字段)。nillable表示字段值可以为NULL(这意味着您不需要提供值,如果缺少,它将默认为NULL)。defaulted表示该字段有一个已定义的默认值,如果您不指定该值,将对其进行设置。因此,您正在寻找三者的1,0,0组合,这是您必须提供值的地方,否则insert将中断。required=creatible==1,nillable==0和defauled==0他们没有提供任何关于如何使用他们提供的phptoolkit的适当文档。我不是在谷歌上搜索如何在phptoolkit中使用Base64二进制文件。正常的base64解码不起作用。@mmix您有没有用PHP而不是Javascript实现过该代码?