Я настраиваю пользовательскую форму и хочу выпадающее поле, которое получает свои значения от внешнего API. В раскрывающемся поле отображаются значения, и когда я добавляю их в пользовательскую форму, отправка формы переходит к 500: Ошибка. Мне было интересно, есть ли процедура для этого в Silverstripe
class TestDropdown extends EditableMultipleOptionField {
private static $singular_name = 'Test Dropdown Field';
private static $plural_name = 'Test Dropdown Fields';
/**
* @return DropdownField
*/
public function getFormField() {
function testAPICall($method, $url, $data){
$curl = curl_init();
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'api.authorization.key: xxxxxxx-yyyy-zzzz-aaaa-bbbbbbbbb',
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
// EXECUTE:
$result = curl_exec($curl);
if(!$result){die("Connection Failure");}
curl_close($curl);
return $result;
}
$get_data = testAPICall('GET', 'http://xxxxxx/yyy/zzzz', false);
$optionSet = json_decode($get_data, true);
if($optionSet) {
foreach($optionSet as $key => $value) {
$options[$key] = $value;
}
}
$field = DropdownField::create($this->Name, $this->Title, $optionSet);
return $field;
}
}