Example #1
0
 public static function renderSelect(Field $field)
 {
     if (strpos($field->getName(), '[]') || is_array($field->getValue())) {
         $field->setAttribute('multiple', 'multiple');
     }
     $selected = is_array($field->getValue()) ? $field->getValue() : [$field->getValue()];
     $select = sprintf('<select name="%s" %s>', $field->getName(), $field->getAttributes());
     foreach ($field->getChoices() as $value => $choice) {
         if (is_array($choice)) {
             if (empty($choice)) {
                 continue;
             }
             $select .= sprintf('<optgroup label="%s">', $value);
             foreach ($choice as $subvalue => $subchoice) {
                 $select .= sprintf('<option value="%s" %s>%s</option>', $subvalue, in_array($subvalue, $selected) ? ' selected="selected"' : '', $subchoice);
             }
             $select .= '</optgroup>';
         } else {
             $select .= sprintf('<option value="%s" %s>%s</option>', $value, in_array($value, $selected) ? ' selected="selected"' : '', $choice);
         }
     }
     return $select . '</select>';
 }