public function render($attr = array()) { parent::mergeAttr($attr); $selected = isset($attr['value']) ? A_Html_Form_Select::_toArray($attr['value']) : array(); unset($attr['value']); $values = A_Html_Form_Select::_toArray($attr['values']); if (empty($attr['labels'])) { $attr['labels'] = $values; } $this->removeAttr($attr, 'values'); $labels = A_Html_Form_Select::_toArray($attr['labels']); $this->removeAttr($attr, 'labels'); if (isset($attr['multiple']) || count($selected) > 1) { $attr['name'] .= '[]'; $attr['multiple'] = 'multiple'; // multiple sends array } $str = ''; foreach ($values as $value) { $str .= '<option value="' . $value . '"'; if (in_array($value, $selected)) { $str .= ' selected="selected"'; } $str .= '>' . current($labels) . "</option>"; next($labels); } return parent::render('select', $attr, $str); }