2016-10-19 4 views
1

Я использую PHP-код для получения списка выбора и их зависимого списка, используя описание «Задача». Он возвращает все зависимые значения, но мне не удается установить родительские и дочерние значения из ответа. Для некоторых полей параметр Validfor пуст. Любой, пожалуйста, помогите мне показать все зависимые поля на моей странице.Получить подборщик, зависящий от Salesforce, используя php

Спасибо заранее!

+0

Извините, E. Ответ Паркера должен быть обозначен как ** правильный **, если он подходит для вас. – statosdotcom

ответ

3

После исследования и борется с той же проблемой в течение некоторого времени, я наткнулся на следующий веб-сайт, который содержал решение наряду с хорошим объяснением того, как они достигли этого:

http://jaswinderjohal.com/salesforce-dependent-list-php/

Решение использует describeSObject, предоставленный в API метаданных Salesforce PHP. Я разработал полный скрипт (показано ниже), слегка изменив код, указанный в предоставленной ссылке.

Сценарий возвращает массив массивов, закодированный JSON, где каждый дополнительный массив содержит только два элемента; первый элемент - это имя значения списка выбора родительской категории, а второй элемент - это массив, содержащий имена значений списка выбора детей, которые относятся к этому родительскому значению. Конечно, кодировка JSON является необязательной, просто удалите строку echo json_encode($finalApplicableOptions); (это было сделано только для того, чтобы продемонстрировать, как выглядит вывод).

Пример вывода сценария:

[["Category 1",["Cat1 Child1", "Cat1 Child2", ... ]],["Category 2",["Cat2 Child1", "Cat2 Child2", ... ]], ...] 

Похоже, что вам нужно, чтобы описать «Task» объект, так что просто использовать $mySforceConnection->describeSObject('Task'), как показано в приведенном ниже сценарии. Затем не забудьте заменить строку-заполнитель "Parent_Category_Name_Goes_Here" в соответствии с свойством «имя» родительского поля и изменить строку-заполнитель "Child_Category_Name_Goes_Here", чтобы он соответствовал свойству «имя» дочернего поля, чтобы указать, какие поля вы хотите получить значения зависимого выбора для.

<?php 

// ** Create $mySforceConnection here as normal ** 

$result = $mySforceConnection->describeSObject('Task'); 

$finalApplicableOptions = array(array()); 

for($i=0; $i < count($result->fields); $i++){ 
    if($result->fields[$i]->name == "Parent_Category_Name_Goes_Here"){ 
     $sub = count($result->fields[$i]->picklistValues); 
     for($j=0;$j < $sub; $j++){ 
      $finalApplicableOptions[$j][0] = $result->fields[$i]->picklistValues[$j]->label; 
      $finalApplicableOptions[$j][1] = array(); 
     } 
    } 
} 

for($i=0;$i < count($result->fields); $i++){ 
    if($result->fields[$i]->name == "Child_Category_Name_Goes_Here"){ 
     for($j=0;$j < count($result->fields[$i]->picklistValues); $j++){ 
      $byteArr = $result->fields[$i]->picklistValues[$j]->validFor; 
      $maparray = array(); 
      $map = ""; 
      foreach(str_split($byteArr) as $c) 
       $maparray [] = sprintf("%08b", ord($c)); 
      $map = implode("", $maparray); 
      for ($k = 0; $k < strlen($map); $k++){ 
       if($map{$k} == "1") 
        $finalApplicableOptions[$k][1][] = 
         $result->fields[$i]->picklistValues[$j]->label; 
      } 
     } 
    } 
} 

echo json_encode($finalApplicableOptions); 

?> 

Надеюсь, что это поможет!

+0

Хороший ответ congrats. – statosdotcom

Смежные вопросы