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 'Тип успешно обновлён!';
 }