【问题标题】:In salesforce phptoolkit how to get dynamic dropdown values在salesforce phptoolkit中如何获取动态下拉值
【发布时间】:2011-04-13 20:21:06
【问题描述】:
  • 我想知道如何检索基于其他字段的动态下拉列表的值。例如:如果“子类别”依赖于“类别”下拉列表,我如何获取其值。

  • 我还想知道如何找到提交新“案例”所需的“案例”的所有字段。我正在尝试使用 phptoolkit 执行此操作,但我没有找到好的文档。

【问题讨论】:

  • @mmix :感谢您告诉我,我从不知道您必须接受最终答案。我认为一个有更多选票的人是最终答案,我一直试图投票但因为我是新手而不能。
  • 即使是新手,您也可以随时接受问题的答案。你需要 20 个代表来投票,我相信你现在已经拥有了。很高兴在这里见到你,希望你留下来。

标签: php soap salesforce


【解决方案1】:

PHP 工具包本质上是一个 WSDL SOAP 包装器,因此适用于 salesforce API Web 服务的任何东西都适用于 PHP 工具包。

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

  1. 调用describeSObject 检索有关对象的信息
  2. describesObjectResult.Fields 中的每个字段都有三个重要的属性,creatablenillabledefaultedOnCreate。如果可创建且不可空且未默认,则必须提供一个值,这将回答问题 #2
  3. 如果字段类型是picklist 或multipcklist,则字段的picklistValues 包含PicklistEntry 元素的列表。如果选择列表是相关的,则每个条目在 validFor 属性中包含一个 base64 编码位图。位置 i 的每个位是 0 或 1,对应于选项列表条目是否适用于位置 i 的主选项列表条目。
  4. 您必须解码位图并使用它来确定该特定条目可用于哪些主选项列表条目。不幸的是,目前这是唯一的方法。

我可以在 javascript 中为您提供一个示例,说明我是如何做到的(lstCategorieslstSubcategoriesPickListEntry 的数组),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]);
        }
    }

【讨论】:

  • 我的另一个问题是,如果 creatable、nillable 和 defaultedOnCreate 都设置为“1”或其中任何一个设置为“1”,是否需要字段?
  • creatable 表示您可以在 INSERT DML 中为其指定值,如果为 0 则您根本无法指定它(例如,公式字段)。 nillable 表示该字段值可以为 NULL(这意味着您不需要提供值,如果缺少它将默认为 null)。 defaulted 表示该字段具有已定义的默认值,如果您不指定它将被设置。因此,您正在寻找三者的 1,0,0 组合,这就是您必须提供值的地方,否则插入会中断。
  • required = creatable == 1 and nillable == 0 and defauled == 0
  • 他们没有提供任何关于如何使用他们提供的 phptoolkit 的适当文档。我不是在谷歌上搜索如何在 phptoolkit 中使用他们的 base64binary。正常的 base64 解码不起作用。
  • @mmix 你有没有在 PHP 而不是 Javascript 中实现该代码?
猜你喜欢
  • 2018-04-07
  • 2013-06-24
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2015-12-05
相关资源
最近更新 更多