예제 #1
0
 /**
  * Monta os dados do formulário para inserir ou editar um registro 
  * 
  * @param  int   $id         O id do page
  * @param  array $formdata   As informações fornecidas pelo addParameter
  * @param  array $formvalues Valores de todos os campos do formulário já validados
  * @return array
  */
 public function edit($id, $formdata, $formvalues)
 {
     if (empty($id)) {
         //Inserir
         $action = $this->urlbase . getValueFromArray($this->config, self::ACTION_URL_SAVE, 'save');
     } else {
         //Alterar
         $action = $this->urlbase . getValueFromArray($this->config, self::ACTION_URL_SAVE, 'save/' . $id);
         $result = $this->dao->getById($id);
         $formvalues = $result;
         //$formvalues = array_merge($result, $formvalues);
     }
     $r = ['action' => $action, 'class' => 'form-horizontal crud', 'method' => 'post', 'hidden' => [], 'formgroup' => []];
     foreach ($formdata as $fieldname => $params) {
         if (getValueFromArray($params['params'], Flag::VISIBLE, true)) {
             $r['formgroup'][] = ['formitem' => ['id' => $fieldname . '_id', 'label' => getValueFromArray($params['params'], Flag::LABEL, ''), 'item' => $this->getDataType($params, $fieldname, $formvalues), 'required' => in_array(Flag::REQUIRED, $params['params']) || getValueFromArray($params['params'], Flag::REQUIRED, false), 'error' => getValueFromArray($params, 'error'), 'ischeckbox' => $params['type'] == 'bool']];
         } else {
             $r['hidden'][] = ['name' => $fieldname, 'value' => getValueFromArray($formvalues, $fieldname, '')];
         }
     }
     $buttons = getValueFromArray($this->config, static::EDIT_BUTTONS, false);
     if ($buttons) {
         $r["buttons"] = $buttons;
     }
     return $r;
 }