public static function renderEdit($request, $module, $action, afDomAccess $view) { $fields = $view->wrapAll('fields/field'); $submitUrl = self::getSubmitUrl($module, $action, $view); $validators = afEditView::getValidators($fields); $fileTypes = afEditView::getFileTypes($fields); $result = array(); $result['success'] = true; $result['af_submitUrl'] = $request->getUriPrefix() . $submitUrl; $instance = afEditShowRenderer::fetchDataInstance($view); foreach (self::getFieldValues($instance, $fields) as $name => $value) { $result[sprintf('edit[%s]', $name)] = $value; } $result['af_formcfg'] = self::buildFormcfg($submitUrl, $validators, $fileTypes); return afOutput::renderText(json_encode($result)); }
/** * Returns the initial value for form field. */ public static function getFieldValue(afDomAccess $field, $object) { $value = $field->get("@value"); $selected = $field->get("@selected"); if (!$value) { if ($field->get("@type") == "checkbox" || $field->get("@type") == "radio") { $value = $field->get("@checked") ? "yes" : "no"; } else { $source = $field->wrapAll("value"); if (!empty($source)) { $method = $source[0]->get("source@name"); if ($method) { $value = $object->{$method}(); } else { $class = $source[0]->get("class"); $method = $source[0]->get("method@name"); $tmp = $source[0]->wrapAll("method/param"); $params = array(); foreach ($tmp as $t) { $params[] = $t->get(""); } $result = call_user_func_array(array($class, $method), $params); if ($field->get("@type") == "combo" || $field->get("@type") == "extendedCombo" || $field->get("@type") == "multicombo") { if (isset($result[$selected])) { $value = $result[$selected]; } } else { if ($field->get("@type") == "doublemulticombo" || $field->get("@type") == "doubletree") { foreach ($result[1] as $r) { $value .= $r . ","; } $value = trim($value, ","); } } } } } } return $value; }