public function actionJQGridEdit() { $model = (string) filter_input(INPUT_POST, 'model'); $addnewval = json_decode((string) filter_input(INPUT_POST, 'addnewval')); if (!@class_exists($model) || !$model::model() instanceof CModel) { throw new CHttpException(500, 'Не существует модель "' . $model . '"'); } if (!method_exists($model, 'GetPermissions')) { throw new CHttpException(500, 'Не существует метод "GetPermissions" модели "' . $model . '"'); } $oper = (string) filter_input(INPUT_POST, 'oper'); if ($oper === 'add') { if ($model::model()->GetPermissions('new')) { $model = new $model(); } else { throw new CHttpException(500, 'Для операции "' . $oper . '" нет разрешения в модели "' . $model . '"'); } } $id = (string) filter_input(INPUT_POST, 'id'); if ($oper === 'edit') { if ($model::model()->GetPermissions('edit')) { $model = $model::model()->findByPk($id); } else { throw new CHttpException(500, 'Для операции "' . $oper . '" нет разрешения в модели "' . $model . '"'); } } if ($oper === 'del') { if ($model::model()->GetPermissions('del')) { $model::model()->deleteByPk($id); exit; } else { throw new CHttpException(500, 'Для операции "' . $oper . '" нет разрешения в модели "' . $model . '"'); } } $model->setScenario((string) filter_input(INPUT_POST, 'scenario')); foreach (array_keys($model->attributes) as $key) { // if (array_key_exists($key, $result[get_class($model)])) { $postvalue = (string) filter_input(INPUT_POST, $key); // Если формат атрибута datetime if (($model instanceof CFormModel || $model->getTableSchema()->getColumn($key)->dbType === 'datetime') && $postvalue !== '' && (DateTime::createFromFormat('d.m.Y H:m:s', $postvalue) || DateTime::createFromFormat('d.m.Y', $postvalue))) { $model[$key] = Proc::DateTimeFormat($model, $postvalue); } else { var_dump($addnewval); if ($postvalue === '' && count((array) $addnewval) > 0 && property_exists($addnewval, $key)) { $relat = $model->relations(); $addnewmodel = ''; array_walk($relat, function ($key, $val) use($addnewmodel) { }); $relat = array_filter($model->relations(), function ($val) use($key) { if ($val[2] === $key) { return true; } }); if (count($relat) > 0) { $model[$key] = Proc::AddNewValueToModel($addnewval->{$key}, $_POST[$addnewval->{$key}], $relat[key($relat)][1]); } } else { if ($postvalue !== '') { $model[$key] = $postvalue; } } } // } } if ($model->validate()) { $model->save(); } else { // Если валидация не пройдена, возвращаем массив с ошибками throw new CHttpException(500, json_encode($model->getErrors())); } }