public function updateAction() { $this->disableRender = true; $typesTable = new K_Tree_Types_Model(); $typeId = $this->getParam('id'); $types = $typesTable->select()->where('`type_id`=' . (int) $typeId)->fetchRow(); $types = $types->toArray(); $form = new K_Form(); $allowedkeys = array('type_desc', 'type_fields'); $values = array(); $formData = $form->getData(); $formPostArray = isset($_POST['type_fields']) ? $_POST['type_fields'] : false; parse_str(substr($_POST['type_fields'], 1), $formPostArray); if ($formPostArray != false) { K_Loader::load('formbuilder', APP_PATH . '/plugins'); $formBuilder = new Formbuilder($formPostArray); $formArray = $formBuilder->get_encoded_form_array(); } else { throw new Exception("Не заданы поля для нового типа!"); } if (!$formData) { throw new Exception("Невозможно обработать форму без данных!"); } foreach ($formData as $elementKey => $elementValue) { if (in_array($elementKey, $allowedkeys)) { if (is_string($elementValue)) { $elementValue = trim($elementValue); } $values[$elementKey] = $elementValue; if ($elementKey == 'type_fields' && json_decode($formArray['form_structure']) == null && !empty($formArray['form_structure'])) { throw new Exception("Поля переданы не в json-формате! " . json_last_error()); } } } K_Tree_Types::update($types['type_name'], $values['type_desc'], $formArray['form_structure'], $formArray); echo 'Тип успешно обновлён!'; }