protected function fillSelect($ctrl, $value) { $data = $ctrl->datasource->getData($this->builder->getForm()); if ($ctrl->datasource instanceof \jIFormsDatasource2 && $ctrl->datasource->hasGroupedData()) { if (isset($data[''])) { foreach ($data[''] as $v => $label) { if (is_array($value)) { $selected = in_array((string) $v, $value, true); } else { $selected = (string) $v === $value; } echo '<option value="', htmlspecialchars($v), '"', $selected ? ' selected="selected"' : '', '>', htmlspecialchars($label), "</option>\n"; } } foreach ($data as $group => $values) { if ($group === '') { continue; } echo '<optgroup label="' . htmlspecialchars($group) . '">'; foreach ($values as $v => $label) { if (is_array($value)) { $selected = in_array((string) $v, $value, true); } else { $selected = (string) $v === $value; } echo '<option value="', htmlspecialchars($v), '"', $selected ? ' selected="selected"' : '', '>', htmlspecialchars($label), "</option>\n"; } echo '</optgroup>'; } } else { foreach ($data as $v => $label) { if (is_array($value)) { $selected = in_array((string) $v, $value, true); } else { $selected = (string) $v === $value; } echo '<option value="', htmlspecialchars($v), '"', $selected ? ' selected="selected"' : '', '>', htmlspecialchars($label), "</option>\n"; } } }