public function actionUpdate($id) { $modelClassified = Classified::findOne($id); $modelImage = ClassifiedImage::find()->where(['classified_id' => $id])->all(); //$modelImage = $modelClassified->id; if ($modelClassified->load(Yii::$app->request->post())) { $oldIDs = \yii\helpers\ArrayHelper::map($modelImage, 'id', 'classified_id'); print_r($oldIDs); $modelImage = \common\models\Model::createMultiple(ClassifiedImage::classname(), $modelImage); \common\models\Model::loadMultiple($modelImage, Yii::$app->request->post()); $deletedIDs = array_diff($oldIDs, array_filter(\yii\helpers\ArrayHelper::map($modelImage, 'id', 'classified_id'))); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; return \yii\helpers\ArrayHelper::merge(\yii\widgets\ActiveForm::validateMultiple($modelImage), \yii\widgets\ActiveForm::validate($modelClassified)); } // validate all models $valid = $modelClassified->validate(); $valid = \common\models\Model::validateMultiple($modelImage) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $modelClassified->save(false)) { if (!empty($deletedIDs)) { ClassifiedImage::deleteAll(['id' => $deletedIDs]); } foreach ($modelImage as $i => $modelImage) { $modelImage->classified_id = $modelClassified->id; if (empty($modelImage->imageFile)) { $name = Yii::$app->security->generateRandomString(); $modelImage->imageFile = \yii\web\UploadedFile::getInstance($modelImage, "[{$i}]imageFile"); if ($modelImage->imageFile) { $modelImage->imageFile->saveAs('uploads/' . $name . '.' . $modelImage->imageFile->extension); //Upload files to server ////save path in db column $modelImage->image = 'uploads/' . $name . '.' . $modelImage->imageFile->extension; //$model->fileProfile->saveAs($model->image_profile); } } if (!($flag = $modelImage->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->refresh(); } } catch (Exception $e) { $transaction->rollBack(); } } } return $this->render('update', ['modelClassified' => $modelClassified, 'modelImage' => empty($modelImage) ? [new ClassifiedImage()] : $modelImage]); }
/** * Creates a new Parameter model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $models = [new Parameter()]; if (Yii::$app->request->post()) { $models = Model::createMultiple(Parameter::classname()); Model::loadMultiple($models, Yii::$app->request->post()); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validateMultiple($models); } // validate all models $valid = Model::validateMultiple($models); if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { $flag = true; foreach ($models as $model) { if (!($flag = $model->save(false))) { $transaction->rollBack(); break; } } if ($flag) { $transaction->commit(); Yii::$app->session->setFlash('alert', ['options' => ['class' => 'alert-success'], 'body' => Yii::t('backend', 'Your data has been successfully saved')]); return $this->redirect(['index']); } } catch (Exception $e) { $transaction->rollBack(); Yii::$app->session->setFlash('alert', ['options' => ['class' => 'alert-danger'], 'body' => Yii::t('backend', 'Your data can\'t be saved')]); return $this->redirect(['index']); } } } return $this->render('create', ['models' => empty($models) ? [new Parameter()] : $models]); }
/** * Updates an existing Po model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { // $model = $this->findModel($id); // // if ($model->load(Yii::$app->request->post()) && $model->save()) { // return $this->redirect(['view', 'id' => $model->id]); // } else { // return $this->render('update', [ // 'model' => $model, // ]); // } $model = $this->findModel($id); $modelsPoItems = $model->poItems; if ($model->load(Yii::$app->request->post())) { $oldIDs = ArrayHelper::map($modelsPoItems, 'id', 'id'); $modelsPoItems = Model::createMultiple(Poitem::classname(), $modelsPoItems); Model::loadMultiple($modelsPoItems, Yii::$app->request->post()); $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsPoItems, 'id', 'id'))); // ajax validation if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ArrayHelper::merge(ActiveForm::validateMultiple($modelsPoItems), ActiveForm::validate($model)); } // validate all models $valid = $model->validate(); $valid = Model::validateMultiple($modelsPoItems) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { if (!empty($deletedIDs)) { Poitem::deleteAll(['id' => $deletedIDs]); } foreach ($modelsPoItems as $modelPoItem) { $modelPoItem->po_id = $model->id; if (!($flag = $modelPoItem->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect(['view', 'id' => $model->id]); } } catch (Exception $e) { $transaction->rollBack(); } } } return $this->render('update', ['model' => $model, 'modelsPoItems' => empty($modelsPoItems) ? [new Poitem()] : $modelsPoItems]); }