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); }