/** * Updates an existing Slider model. * If update is successful, the browser will be redirected to the 'view' page. * @param null|string $id * @return mixed */ public function actionUpdate($id = null) { $abstractModel = new BaseSliderEditModel(); if (is_null($id)) { $model = new Slider(); $model->loadDefaultValues(); } else { $model = $this->findModel($id); if ($model->handler() !== null) { $abstractModel = Yii::createObject(['class' => $model->handler()->edit_model]); if (!empty($model->params)) { $abstractModel->unserialize($model->params); } } } $post = Yii::$app->request->post(); if ($model->load($post) && $model->validate()) { if ($model->handler() !== null) { $abstractModel = Yii::createObject(['class' => $model->handler()->edit_model]); if (!empty($model->params)) { $abstractModel->unserialize($model->params); } } $abstractModel->load($post); if ($abstractModel->validate()) { $model->params = $abstractModel->serialize(); if ($model->save()) { return $this->redirectUser($model->id, true, 'index', 'update'); } else { Yii::$app->session->setFlash('error', Yii::t('app', 'Cannot save data')); } } else { Yii::$app->session->setFlash('error', Yii::t('app', 'Cannot save data')); } } $searchModel = new Slide(); $searchModel->slider_id = $model->id; $dataProvider = $searchModel->search($_GET); return $this->render('update', ['model' => $model, 'abstractModel' => $abstractModel, 'dataProvider' => $dataProvider, 'searchModel' => $searchModel]); }