/** * Формирует <select> из заданных данных * @param \T4\Core\Collection $data Массив данных * @param int $selected * @param array $options * @param array $htmlOptions * @return string */ public static function select(Collection $data, $selected = 0, $options = [], $htmlOptions = []) { if (empty($options['valueColumn'])) { $options['valueColumn'] = Model::PK; } if (empty($options['titleColumn'])) { $options['titleColumn'] = 'title'; } if (is_array($selected)) { $selected = $selected[$options['valueColumn']]; } if ($selected instanceof Model) { $selected = $selected->{$options['valueColumn']}; } if (empty($options['disabled'])) { $options['disabled'] = []; } if ($options instanceof Std) { $options = $options->getData(); } $html = '<select' . (isset($htmlOptions['id']) ? ' id="' . $htmlOptions['id'] . '"' : '') . (isset($htmlOptions['name']) ? ' name="' . $htmlOptions['name'] . '"' : '') . (isset($htmlOptions['class']) ? ' class="' . $htmlOptions['class'] . '"' : '') . (in_array('disabled', $htmlOptions) ? ' disabled="disabled"' : '') . '>' . "\n"; if (isset($options['null']) && $options['null']) { $data->prepend([$options['valueColumn'] => 0, $options['titleColumn'] => '---']); } foreach ($data as $item) { $html .= '<option value="' . $item[$options['valueColumn']] . '"' . ($item[$options['valueColumn']] == $selected ? ' selected="selected"' : '') . (in_array($item[$options['valueColumn']], $options['disabled']) ? ' disabled="disabled"' : '') . '>' . (in_array('tree', $options) && isset($options['treeLevelColumn']) && isset($item[$options['treeLevelColumn']]) ? str_repeat(self::TREE_LEVEL_SYMBOL, (int) $item[$options['treeLevelColumn']]) : '') . ' ' . $item[$options['titleColumn']] . '</option>' . "\n"; } $html .= '</select>'; return $html; }