$options * @param array $selected * @param array $customExtra */ function form_dropdown( string $name = '', array $options = [], array $selected = [], array $customExtra = [] ): string { $defaultExtra = [ 'data-select-text' => lang('Common.forms.multiSelect.selectText'), 'data-loading-text' => lang('Common.forms.multiSelect.loadingText'), 'data-no-results-text' => lang('Common.forms.multiSelect.noResultsText'), 'data-no-choices-text' => lang('Common.forms.multiSelect.noChoicesText'), 'data-max-item-text' => lang('Common.forms.multiSelect.maxItemText'), ]; $extra = array_merge($defaultExtra, $customExtra); $defaults = [ 'name' => $name, ]; // standardize selected as strings, like the option keys will be. foreach ($selected as $key => $item) { $selected[$key] = $item; } $placeholderOption = ''; if (isset($extra['placeholder'])) { $placeholderOption = ''; unset($extra['placeholder']); } $extra = stringify_attributes($extra); $multiple = (count($selected) > 1 && stripos($extra, 'multiple') === false) ? ' multiple="multiple"' : ''; $form = '\n"; } }