/** * 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; }