Example #1
0
 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);
 }
Example #2
0
 public function render($attr = array())
 {
     parent::mergeAttr($attr);
     if (isset($attr['value_col']) && isset($attr['label_cols'])) {
         $rows = array();
         if (isset($attr['db']) && isset($attr['sql'])) {
             $db = $attr['db'];
             $result = $db->query($attr['sql']);
             if (!$db->isError()) {
                 while ($row = $result->fetchRow()) {
                     $rows[] = $row;
                 }
             }
         } elseif (is_array($attr['model'])) {
             $rows = call_user_func_array($attr['model'], isset($attr['model_params']) ? $attr['model_params'] : array());
         }
         if ($rows) {
             if (is_string($attr['label_cols'])) {
                 $attr['label_cols'] = explode('|', $attr['label_cols']);
             }
             foreach ($rows as $row) {
                 $attr['values'][] = $row[$attr['value_col']];
                 $label = '';
                 foreach ($attr['label_cols'] as $col) {
                     $label .= $row[$col] . ' ';
                 }
                 $attr['labels'][] = $label;
             }
         }
         $this->removeAttr($attr, 'model');
         $this->removeAttr($attr, 'db');
         $this->removeAttr($attr, 'sql');
         $this->removeAttr($attr, 'value_col');
         $this->removeAttr($attr, 'label_cols');
     }
     return parent::render($attr);
 }