Example #1
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);
 }