예제 #1
0
파일: Helpers.php 프로젝트: sapak12/t4
 /**
  * Формирует <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;
 }