public function actionEdit($parent_id = null, $id = null)
 {
     if (null === $parent_id) {
         throw new NotFoundHttpException();
     }
     if (null === ($object = Object::getForClass(Category::className()))) {
         throw new ServerErrorHttpException();
     }
     /** @var null|Category|HasProperties $model */
     $model = null;
     if (null !== $id) {
         $model = Category::findById($id, null, null);
     } else {
         $parent = Category::findById($parent_id, null, null);
         if ($parent_id === '0' || !is_null($parent)) {
             $model = new Category();
             $model->loadDefaultValues();
             $model->parent_id = $parent_id;
             if ($parent_id !== '0') {
                 $model->category_group_id = $parent->category_group_id;
             }
         } else {
             throw new ServerErrorHttpException();
         }
     }
     if (null === $model) {
         throw new ServerErrorHttpException();
     }
     $event = new BackendEntityEditEvent($model);
     $this->trigger(self::BACKEND_CATEGORY_EDIT, $event);
     $post = \Yii::$app->request->post();
     if ($event->isValid && $model->load($post) && $model->validate()) {
         $saveStateEvent = new BackendEntityEditEvent($model);
         $this->trigger(self::BACKEND_CATEGORY_EDIT_SAVE, $saveStateEvent);
         $save_result = $model->save();
         $model->saveProperties($post);
         if (null !== ($view_object = ViewObject::getByModel($model, true))) {
             if ($view_object->load($post, 'ViewObject')) {
                 if ($view_object->view_id <= 0) {
                     $view_object->delete();
                 } else {
                     $view_object->save();
                 }
             }
         }
         if ($save_result) {
             $modelAfterSaveEvent = new BackendEntityEditEvent($model);
             $this->trigger(self::BACKEND_CATEGORY_AFTER_SAVE, $modelAfterSaveEvent);
             $this->runAction('save-info', ['model_id' => $model->id]);
             Yii::$app->session->setFlash('success', Yii::t('app', 'Record has been saved'));
             $returnUrl = Yii::$app->request->get('returnUrl', ['index']);
             switch (Yii::$app->request->post('action', 'save')) {
                 case 'next':
                     return $this->redirect(['edit', 'returnUrl' => $returnUrl, 'parent_id' => Yii::$app->request->get('parent_id', null)]);
                 case 'back':
                     return $this->redirect($returnUrl);
                 default:
                     return $this->redirect(Url::toRoute(['edit', 'id' => $model->id, 'returnUrl' => $returnUrl, 'parent_id' => $model->parent_id]));
             }
         } else {
             throw new ServerErrorHttpException();
         }
     }
     return $this->render('category-form', ['model' => $model, 'object' => $object]);
 }