DataTypeDatalist: allow Array destination type

fixes #1080
This commit is contained in:
Thomas Gelf 2017-08-28 09:23:35 +02:00
parent 2ef865392b
commit d37af09190
2 changed files with 24 additions and 6 deletions

View File

@ -11,12 +11,20 @@ class DataTypeDatalist extends DataTypeHook
{
public function getFormElement($name, QuickForm $form)
{
$element = $form->createElement('select', $name, array(
'multiOptions' => array(null => '- please choose -') +
$this->getEntries($form),
));
$enum = $this->getEntries($form);
$params = [];
if ($this->getSetting('data_type') === 'array') {
$type = 'extensibleSet';
$params['sorted'] = true;
$params = ['multiOptions' => $enum];
} else {
$params = ['multiOptions' => [
null => $form->translate('- please choose -'),
] + $enum];
$type = 'select';
}
return $element;
return $form->createElement($type, $name, $params);
}
protected function getEntries(QuickForm $form)
@ -50,6 +58,16 @@ class DataTypeDatalist extends DataTypeHook
'multiOptions' => array(null => '- please choose -') +
$db->enumDatalist(),
));
$form->addElement('select', 'data_type', [
'label' => $form->translate('Target data type'),
'multiOptions' => $form->optionalEnum([
'string' => $form->translate('String'),
'array' => $form->translate('Array'),
]),
'required' => true,
]);
return $form;
}
}

View File

@ -33,7 +33,7 @@ class DataTypeDirectorObject extends DataTypeHook
$enum = $db->fetchPairs($query);
$params = [];
if ($this->getSetting('data_type') === 'array') {
$type = 'extensibleSet';
$params['sorted'] = true;