validateMultiple() public static method

This is a helper method that simplifies the way of writing AJAX validation code for tabular input. For example, you may use the following code in a controller action to respond to an AJAX validation request: php ... load $models ... if (Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validateMultiple($models); } ... respond to non-AJAX request ...
public static validateMultiple ( array $models, mixed $attributes = null ) : array
$models array an array of models to be validated.
$attributes mixed list of attributes that should be validated. If this parameter is empty, it means any attribute listed in the applicable validation rules should be validated.
return array the error message array indexed by the attribute IDs.
コード例 #1
2
 public function update(AdminAction $adminAction)
 {
     /**
      * @var $model CmsTree
      */
     $model = $this->model;
     $relatedModel = $model->relatedPropertiesModel;
     $rr = new RequestResponse();
     if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         return \yii\widgets\ActiveForm::validateMultiple([$model, $relatedModel]);
     }
     if ($rr->isRequestPjaxPost()) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         if ($model->save() && $relatedModel->save()) {
             \Yii::$app->getSession()->setFlash('success', \Yii::t('skeeks/cms', 'Saved'));
             if (\Yii::$app->request->post('submit-btn') == 'apply') {
             } else {
                 return $this->redirect($this->indexUrl);
             }
             $model->refresh();
         } else {
             $errors = [];
             if ($model->getErrors()) {
                 foreach ($model->getErrors() as $error) {
                     $errors[] = implode(', ', $error);
                 }
             }
             \Yii::$app->getSession()->setFlash('error', \Yii::t('skeeks/cms', 'Could not save') . $errors);
         }
     }
     return $this->render('_form', ['model' => $model, 'relatedModel' => $relatedModel]);
 }
コード例 #2
1
 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]);
 }
コード例 #3
1
 /**
  * Performs ajax validation
  *
  * @param $model
  * @return \yii\console\Response|\yii\web\Response
  */
 protected function performAjaxValidation($model)
 {
     $result = $model instanceof Model ? ActiveForm::validate($model) : ActiveForm::validateMultiple($model);
     $response = Yii::$app->getResponse();
     if (!empty($result) && ($ajaxRedirect = Yii::$app->getSession()->get('site_ajax_redirect'))) {
         $response = $response->redirect($ajaxRedirect);
         Yii::$app->getSession()->remove('site_ajax_redirect');
     } else {
         $response->format = Response::FORMAT_JSON;
         $response->data = $result;
     }
     return $response;
 }
コード例 #4
1
 public function update(AdminAction $adminAction)
 {
     /**
      * @var $model CmsUser
      */
     $model = $this->model;
     $relatedModel = $model->relatedPropertiesModel;
     $passwordChange = new PasswordChangeForm(['user' => $model]);
     $passwordChange->scenario = PasswordChangeForm::SCENARION_NOT_REQUIRED;
     $rr = new RequestResponse();
     if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         $passwordChange->load(\Yii::$app->request->post());
         return \yii\widgets\ActiveForm::validateMultiple([$model, $relatedModel, $passwordChange]);
     }
     if ($rr->isRequestPjaxPost()) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         $passwordChange->load(\Yii::$app->request->post());
         if ($model->save() && $relatedModel->save()) {
             \Yii::$app->getSession()->setFlash('success', \Yii::t('skeeks/cms', 'Saved'));
             if ($passwordChange->new_password) {
                 if (!$passwordChange->changePassword()) {
                     \Yii::$app->getSession()->setFlash('error', "Пароль не изменен");
                 }
             }
             if (\Yii::$app->request->post('submit-btn') == 'apply') {
             } else {
                 return $this->redirect($this->indexUrl);
             }
             $model->refresh();
         } else {
             $errors = [];
             if ($model->getErrors()) {
                 foreach ($model->getErrors() as $error) {
                     $errors[] = implode(', ', $error);
                 }
             }
             \Yii::$app->getSession()->setFlash('error', \Yii::t('skeeks/cms', 'Could not save') . ". " . implode($errors));
         }
     }
     return $this->render('_form', ['model' => $model, 'relatedModel' => $relatedModel, 'passwordChange' => $passwordChange]);
 }
コード例 #5
1
 /**
  * Updates an existing Alias model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param string $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $languages = Yii::$app->params['languages'];
     $model = $this->findModel($id);
     // Load all the translations
     $model->loadTranslations(array_keys($languages));
     // Load the entities
     $entities = [];
     $entities['pages'] = (new Query())->select('page.id, page_lang.name')->from(['page' => 'pages'])->innerJoin(['page_lang' => 'pages_lang'], "page.id = page_lang.page_id AND page_lang.language = '" . Yii::$app->language . "'")->orderBy(['page_lang.name' => SORT_ASC])->all();
     if (Yii::$app->request->getIsPost()) {
         $post = Yii::$app->request->post();
         // Ajax request, validate the models
         if (Yii::$app->request->isAjax) {
             // Populate the model with the POST data
             $model->load($post);
             // Create an array of translation models
             $translationModels = [];
             foreach ($languages as $languageId => $languageName) {
                 $translationModels[$languageId] = new AliasLang(['language' => $languageId]);
             }
             // Populate the translation models
             Model::loadMultiple($translationModels, $post);
             // Validate the model and translation models
             $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
             // Return validation in JSON format
             Yii::$app->response->format = Response::FORMAT_JSON;
             return $response;
             // Normal request, save models
         } else {
             // Wrap the everything in a database transaction
             $transaction = Yii::$app->db->beginTransaction();
             // Save the main model
             if (!$model->load($post) || !$model->save()) {
                 return $this->render('update', ['model' => $model, 'entities' => $entities]);
             }
             // Save the translations
             foreach ($languages as $languageId => $languageName) {
                 $data = $post['AliasLang'][$languageId];
                 // Set the translation language and attributes
                 $model->language = $languageId;
                 $model->url = $data['url'];
                 if (!$model->saveTranslation()) {
                     return $this->render('update', ['model' => $model, 'entities' => $entities]);
                 }
             }
             $transaction->commit();
             // Switch back to the main language
             $model->language = Yii::$app->language;
             // Set flash message
             Yii::$app->getSession()->setFlash('alias', Yii::t('app', '"{item}" has been updated', ['item' => $model->url]));
             // Take appropriate action based on the pushed button
             if (isset($post['close'])) {
                 return $this->redirect(['index']);
             } elseif (isset($post['new'])) {
                 return $this->redirect(['create']);
             } else {
                 return $this->redirect(['update', 'id' => $model->id]);
             }
         }
     }
     return $this->render('update', ['model' => $model, 'entities' => $entities]);
 }
コード例 #6
1
ファイル: PoController.php プロジェクト: sydorenkovd/yiiadv
 /**
  * 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]);
 }
コード例 #7
1
ファイル: CrudController.php プロジェクト: ivphpan/gwm
 /**
  * Updates an existing Page model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @param integer $langId
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $class = $this->modelClass;
     $models = $class::findAll(['id' => $id]);
     if (!$models) {
         throw new HttpException('404');
     }
     if (\Yii::$app->request->isAjax && $class::loadMultiple($models, \Yii::$app->request->post())) {
         \Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validateMultiple($models);
     }
     if ($class::loadMultiple($models, $_POST) && $class::validateMultiple($models)) {
         foreach ($models as $model) {
             $model->save();
         }
         $model->updateAliasOther();
         return $this->redirect($this->generateRedirectParams($model, $this->redirectUpdate));
     }
     $renderMethod = \Yii::$app->request->get('partial') ? 'renderPartial' : 'render';
     $renderMethod = \Yii::$app->request->isAjax ? 'renderPartial' : $renderMethod;
     return $this->{$renderMethod}('update', ['models' => $models, 'model' => current($models)]);
 }
コード例 #8
1
 /**
  * @inheritDoc
  */
 protected function runTabular($models)
 {
     return ActiveForm::validateMultiple($models);
 }
コード例 #9
0
 protected function performAjaxValidationMultiple(array $models)
 {
     if (Yii::$app->request->isAjax && Model::loadMultiple($models, Yii::$app->request->post())) {
         Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validateMultiple($models);
     }
 }
コード例 #10
0
 public function actionStuinforeport()
 {
     $selected_list = $query = NULL;
     $student_data = array();
     $model = new StuMaster();
     $info = new StuInfo();
     $course = $batch = $section = null;
     if (!empty($_POST['s_info']) && !empty($_POST['StuMaster']['stu_master_course_id']) || (!empty($_POST['StuMaster']['report_batch_id']) || !empty($_POST['StuMaster']['report_section_id']) || !empty($_POST['StuMaster']['report_city']) || !empty($_POST['StuInfo']['stu_gender']))) {
         if (Yii::$app->request->isAjax) {
             \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
             return ActiveForm::validateMultiple([$model, $info]);
         }
         if (!empty($_POST['StuMaster']['stu_master_course_id'])) {
             $query .= "stu.stu_master_course_id=" . $_POST['StuMaster']['stu_master_course_id'] . " AND ";
         }
         if (!empty($_POST['StuMaster']['report_batch_id'])) {
             $query .= "stu.stu_master_batch_id=" . $_POST['StuMaster']['report_batch_id'] . " AND ";
         }
         if (!empty($_POST['StuMaster']['report_section_id'])) {
             $query .= "stu.stu_master_section_id=" . $_POST['StuMaster']['report_section_id'] . " AND ";
         }
         if (!empty($_POST['StuMaster']['report_city'])) {
             $query .= "add.stu_cadd_city=" . $_POST['StuMaster']['report_city'] . " AND ";
         }
         if (!empty($_POST['StuInfo']['stu_gender'])) {
             $query .= "s_info.stu_gender='" . $_POST['StuInfo']['stu_gender'] . "' AND ";
         }
         if (!empty($_POST['s_info'])) {
             $selected_list = $_POST['s_info'];
         }
         echo $model->validate();
         $query1 = new \yii\db\Query();
         $query1->select('*')->from('stu_master stu')->join('join', 'stu_info s_info', 's_info.stu_info_id = stu.stu_master_stu_info_id')->join('join', 'stu_address add', 'add.stu_address_id = stu.stu_master_stu_address_id')->where($query . 'stu.is_status = 0');
         $command = $query1->createCommand();
         $student_data = $command->queryAll();
         if (empty($student_data)) {
             \Yii::$app->getSession()->setFlash('studerror', "<i class='fa fa-exclamation-triangle'></i> <b> No Record For This Criteria.</b>");
             return $this->redirect(['stuinforeport']);
         }
         return $this->render('stu_info_report', ['student_data' => $student_data, 'selected_list' => $selected_list, 'query' => $query]);
         break;
     }
     return $this->render('stu_report_view', ['model' => $model, 'info' => $info, 'query' => $query, 'selected_list' => $selected_list]);
 }
コード例 #11
0
 /**
  * Display all config paramters for $byModule.
  * @return mixed
  */
 public function actionIndex()
 {
     $models = Config::find()->where(['module' => $this->byModule])->orderBy(['id' => SORT_ASC])->indexBy('id')->all();
     if (Model::loadMultiple($models, Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validateMultiple($models, 'value');
         }
         $result = true;
         foreach ($models as $model) {
             $result = $result && $model->save(true, ['value']);
         }
         if ($result && Module::getInstance()->configManager->clearCache()) {
             Yii::$app->session->setFlash('success', Module::t('SAVE_SUCCESS'));
             return $this->redirect(['index']);
         }
     }
     return $this->render('index', ['models' => $models]);
 }
コード例 #12
0
ファイル: ConfigAction.php プロジェクト: skinka/yii2-config
 /**
  * @return array|string|Response
  */
 public function run()
 {
     $models = ConfigModel::find()->orderBy(['sort' => SORT_ASC])->indexBy('name')->all();
     if (Model::loadMultiple($models, Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validateMultiple($models, 'value');
         }
         $result = true;
         /** @var ConfigModel $model */
         foreach ($models as $model) {
             $result = $result && $model->save(true, ['value']);
             Config::clearCache($model->name);
         }
         if ($result) {
             Yii::$app->session->setFlash('success', $this->successMessage);
             return $this->controller->redirect([$this->id]);
         }
     }
     return $this->controller->render($this->viewPath, ['models' => $models]);
 }
コード例 #13
0
ファイル: StudentController.php プロジェクト: EduSec/EduSec
 public function actionStuinforeport()
 {
     $student_data = $selected_list = [];
     $model = new StuMaster();
     $info = new StuInfo();
     if ($model->load(Yii::$app->request->post()) && $info->load(Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
             return ActiveForm::validateMultiple([$model, $info]);
         }
         $selected_list = $_POST['s_info'];
         $query1 = new \yii\db\Query();
         $query1->select('*')->from('stu_master stu')->join('join', 'stu_info s_info', 's_info.stu_info_id = stu.stu_master_stu_info_id')->join('join', 'stu_address add', 'add.stu_address_id = stu.stu_master_stu_address_id')->where(['stu.is_status' => 0])->andFilterWhere(['stu.stu_master_course_id' => $model->stu_master_course_id])->andFilterWhere(['stu.stu_master_batch_id' => $model->report_batch_id])->andFilterWhere(['stu.stu_master_section_id' => $model->report_section_id])->andFilterWhere(['add.stu_cadd_city' => $model->report_city])->andFilterWhere(['s_info.stu_gender' => $info->stu_gender]);
         $command = $query1->createCommand();
         $student_data = $command->queryAll();
         Yii::$app->session->set('data["stuData"]', $student_data);
         Yii::$app->session->set('data["selection"]', $selected_list);
         if (empty($student_data)) {
             \Yii::$app->getSession()->setFlash('studerror', "<i class='fa fa-exclamation-triangle'></i> <b> " . Yii::t('report', 'No Record Found For This Criteria.') . "</b>");
             return $this->redirect(['stuinforeport']);
         }
         return $this->render('stu_info_report', ['student_data' => $student_data, 'selected_list' => $selected_list]);
     } else {
         if (Yii::$app->request->get('exportExcel')) {
             $file = $this->renderPartial('stu_info_report_excel', array('student_data' => Yii::$app->session->get('data["stuData"]'), 'selected_list' => Yii::$app->session->get('data["selection"]')));
             $fileName = "Employee_info_report" . date('YmdHis') . '.xls';
             $options = ['mimeType' => 'application/vnd.ms-excel'];
             return Yii::$app->excel->exportExcel($file, $fileName, $options);
         } else {
             if (Yii::$app->request->get('exportPDF')) {
                 $html = $this->renderPartial('stu_info_report_pdf', array('student_data' => Yii::$app->session->get('data["stuData"]'), 'selected_list' => Yii::$app->session->get('data["selection"]')));
                 ob_clean();
                 return Yii::$app->pdf->exportData('Employee Info Report', 'Employee_info_report', $html);
             }
         }
     }
     return $this->render('stu_report_view', ['model' => $model, 'info' => $info, 'selected_list' => $selected_list]);
 }
コード例 #14
0
 /**
  * Updates an existing Order model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $modelOrder = $this->findModel($id);
     $modelsItems = $this->getModelItems($modelOrder->orderId);
     $modelOrder->scenario = 'managerAdd';
     //$modelsItems = $modelOrder->items;
     $customers_model = new Customers();
     $customers_base = $arr_keys = $arr_vals = array();
     $good_base = $customers_model->find()->where(['isWork' => 1])->orderBy('id')->asArray()->all();
     foreach ($good_base as $key => $value) {
         array_push($arr_keys, $value["id"]);
         array_push($arr_vals, $value["customerName"]);
     }
     $customers_base = array_combine(array($arr_keys), array($arr_vals));
     if ($modelOrder->load(Yii::$app->request->post())) {
         echo "== post request<br/>";
         $oldIDs = ArrayHelper::map($modelsItems, 'id', 'orderId');
         echo "== oldIDs are=<br/>";
         print_r($oldIDs);
         $modelsItems = OrderDetail::createMultiple(OrderDetail::classname(), $modelsItems);
         Model::loadMultiple($modelsItems, Yii::$app->request->post());
         echo "== deletedIDs are=<br/>";
         print_r($deletedIDs);
         $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsItems, 'id', 'orderId')));
         // ajax validation
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ArrayHelper::merge(ActiveForm::validateMultiple($modelsItems), ActiveForm::validate($modelOrder));
         }
         // validate all models
         $valid = $modelOrder->validate();
         $valid = print_r(Model::validateMultiple($modelsItems)) && $valid;
         echo "== valid is=  " . $valid . "<br/>";
         if ($valid) {
             $transaction = \Yii::$app->db->beginTransaction();
             echo "==(trasaction) start<br/>";
             try {
                 if ($flag = $modelOrder->save(false)) {
                     if (!empty($deletedIDs)) {
                         echo "==(trasaction) delete oldIDs<br/>";
                         OrderDetail::deleteAll(['orderId' => $deletedIDs]);
                     }
                     echo "==(trasaction) modelItems post data are=<br/>";
                     foreach ($modelsItems as $modelItems) {
                         echo "==(trasaction) save model item<br/>";
                         $modelItems->orderId = $modelOrder->orderId;
                         if (!($flag = $modelItems->save(false))) {
                             echo "======(trasaction) rollback<br/>";
                             $transaction->rollBack();
                             break;
                         }
                     }
                 }
                 if ($flag) {
                     $transaction->commit();
                     echo "==(trasaction) all ok. start redirect<br/>";
                     return $this->redirect(['view', 'orderId' => $modelOrder->orderId]);
                 }
             } catch (Exception $e) {
                 echo "======(trasaction) rollback catch way<br/>";
                 $transaction->rollBack();
             }
         }
     }
     return $this->render('update', ['modelOrder' => $modelOrder, 'modelsItems' => empty($modelsItems) ? [new OrderDetail()] : $modelsItems, 'customers_base' => $customers_base]);
 }
コード例 #15
0
 /**
  * Allows users to view or update their profile.
  * @param  boolean $update
  * @return string
  */
 public function actionProfile($update = false)
 {
     /** @var ProfileForm */
     $model = $this->module->createFormModel('ProfileForm');
     $model->setAttributes($model->getIdentity()->getIdentityAttributes());
     $loadedModel = $model->load($_POST);
     /** @var PasswordForm */
     $passwordForm = $this->module->createFormModel('PasswordForm');
     $loadedPassword = isset($_POST[$passwordForm->formName()]) && trim($_POST[$passwordForm->formName()]['newPassword']) !== '' && $passwordForm->load($_POST);
     if ($loadedModel) {
         if ($model->getIdentity() instanceof PictureIdentityInterface && !empty($model->pictureUploadRules)) {
             $model->picture = \yii\web\UploadedFile::getInstance($model, 'picture');
         }
         $passwordForm->password = $model->password;
     }
     if (Yii::$app->request->isAjax) {
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         $models = [];
         if ($loadedModel) {
             $models[] = $model;
         }
         if ($loadedPassword) {
             $models[] = $passwordForm;
         }
         return \yii\widgets\ActiveForm::validateMultiple($models);
     }
     $flashes = ['success' => [], 'error' => []];
     /**
      * Only try to set new password if it has been specified in the form.
      * The current password could have been used to authorize other changes.
      */
     if ($loadedPassword) {
         if ($passwordForm->validate() && $passwordForm->resetPassword($model->getIdentity())) {
             $flashes['success'][] = Yii::t('usr', 'Changes have been saved successfully.');
         } else {
             $flashes['error'][] = Yii::t('usr', 'Failed to change password.');
         }
     }
     if ($loadedModel && empty($flashes['error'])) {
         if ($model->validate()) {
             $oldEmail = $model->getIdentity()->getEmail();
             if ($model->save($this->module->requireVerifiedEmail)) {
                 if ($this->module->requireVerifiedEmail && $oldEmail != $model->email) {
                     if ($this->sendEmail($model, 'verify')) {
                         $flashes['success'][] = Yii::t('usr', 'An email containing further instructions has been sent to provided email address.');
                     } else {
                         $flashes['error'][] = Yii::t('usr', 'Failed to send an email.') . ' ' . Yii::t('usr', 'Try again or contact the site administrator.');
                     }
                 }
                 $flashes['success'][] = Yii::t('usr', 'Changes have been saved successfully.');
                 if (!empty($flashes['success'])) {
                     Yii::$app->session->setFlash('success', implode('<br/>', $flashes['success']));
                 }
                 if (!empty($flashes['error'])) {
                     Yii::$app->session->setFlash('error', implode('<br/>', $flashes['error']));
                 }
                 return $this->redirect(['profile']);
             } else {
                 $flashes['error'][] = Yii::t('usr', 'Failed to update profile.') . ' ' . Yii::t('usr', 'Try again or contact the site administrator.');
             }
         }
     }
     if (!empty($flashes['success'])) {
         Yii::$app->session->setFlash('success', implode('<br/>', $flashes['success']));
     }
     if (!empty($flashes['error'])) {
         Yii::$app->session->setFlash('error', implode('<br/>', $flashes['error']));
     }
     if ($update) {
         return $this->render('updateProfile', ['model' => $model, 'passwordForm' => $passwordForm]);
     } else {
         return $this->render('viewProfile', ['model' => $model]);
     }
 }
 /**
  * Performs validation on the provided model and $_POST data
  *
  * @param \infoweb\pages\models\Page $model The page model
  * @param array $post The $_POST data
  * @return array
  */
 protected function validateModel($model, $post)
 {
     $languages = Yii::$app->params['languages'];
     // Populate the model with the POST data
     $model->load($post);
     // Create an array of translation models and populate them
     $translationModels = [];
     // Insert
     if ($model->isNewRecord) {
         foreach ($languages as $languageId => $languageName) {
             $translationModels[$languageId] = new Lang(['language' => $languageId]);
         }
         // Update
     } else {
         $translationModels = ArrayHelper::index($model->getTranslations()->all(), 'language');
     }
     Model::loadMultiple($translationModels, $post);
     // Validate the model and translation
     $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
     // Return validation in JSON format
     Yii::$app->response->format = Response::FORMAT_JSON;
     return $response;
 }
コード例 #17
0
 /**
  * Редактировать пользователя
  * @param $id
  * @return array|string|Response
  * @throws ForbiddenHttpException
  * @throws NotFoundHttpException
  */
 public function actionUpdate($id)
 {
     if (!Yii::$app->user->can('user-view')) {
         throw new ForbiddenHttpException(Yii::t('users.rbac', 'ACCESS_DENIED'));
     }
     $user = $this->findModel($id);
     $user->scenario = 'update';
     $profile = new models\backend\Profile(['scenario' => 'create']);
     $person = new models\backend\LegalPerson(['scenario' => 'create']);
     $user->password = '';
     // Сброс пароля
     if ($user->profile) {
         $profile = $user->profile;
         $profile->scenario = 'update';
     }
     if ($user->person) {
         $person = $user->person;
         $person->scenario = 'update';
     }
     // Разблокировать пользователя
     if (isset(Yii::$app->request->get()['rebanned'])) {
         if (Yii::$app->user->reBannedByUser($user->id)) {
             Yii::$app->session->setFlash('success', Yii::t('users', 'SUCCESS_UPDATE'));
         } else {
             Yii::$app->session->setFlash('danger', Yii::t('users', 'FAIL_UPDATE'));
         }
         return $this->redirect(['update', 'id' => $user->id]);
     }
     if (Yii::$app->request->isPost) {
         if (!Yii::$app->user->can('user-update')) {
             throw new ForbiddenHttpException(Yii::t('users.rbac', 'ACCESS_DENIED'));
         }
         $user->load(Yii::$app->request->post());
         $profile->load(Yii::$app->request->post());
         $person->load(Yii::$app->request->post());
         if (!ActiveForm::validateMultiple([$user, $profile, $person])) {
             $user->populateRelation('profile', $profile);
             $user->populateRelation('person', $person);
             if ($user->save(false)) {
                 Yii::$app->session->setFlash('success', Yii::t('users', 'SUCCESS_UPDATE'));
             } else {
                 Yii::$app->session->setFlash('danger', Yii::t('users', 'FAIL_UPDATE'));
             }
             return $this->refresh();
         } else {
             if (Yii::$app->request->isAjax) {
                 Yii::$app->response->format = Response::FORMAT_JSON;
                 return ActiveForm::validateMultiple([$user, $profile, $person]);
             }
         }
     }
     return $this->render('update', ['user' => $user, 'profile' => $profile, 'person' => $person]);
 }
コード例 #18
0
 /**
  * Updates an existing Term model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $languages = Yii::$app->params['languages'];
     $model = Term::findOne($id);
     $root = Yii::$app->session->get('taxonomy.taxonomy-id');
     try {
         if (Yii::$app->request->getIsPost()) {
             $post = Yii::$app->request->post();
             // Ajax request, validate the models
             if (Yii::$app->request->isAjax) {
                 // Populate the model with the POST data
                 $model->load($post);
                 // Create an array of translation models
                 $translationModels = [];
                 foreach ($languages as $languageId => $languageName) {
                     $translationModels[$languageId] = $model->getTranslation($languageId);
                 }
                 // Populate the translation models
                 Model::loadMultiple($translationModels, $post);
                 // Validate the model and translation models
                 $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
                 // Return validation in JSON format
                 Yii::$app->response->format = Response::FORMAT_JSON;
                 return $response;
                 // Normal request, save models
             } else {
                 // Wrap the everything in a database transaction
                 $transaction = Yii::$app->db->beginTransaction();
                 $parent = Term::findOne($post['Term']['parent_id']);
                 $previous = $model->prev()->one();
                 // Save the main model
                 if (!$model->load($post)) {
                     throw new Exception(Yii::t('app', 'Failed to load the node'));
                 }
                 /*
                 // If there is a new parent, move as last
                 if ($parent->id <> $model->parents(1)->one()->id) {
                 
                     if (!$model->moveAsLast($parent)) {
                         throw new Exception(Yii::t('app', 'Failed to update the node'));
                     }
                 
                 // If there is a ancestor sibling, move after the sibling
                 } elseif (isset($previous)) {
                 
                     if (!$model->moveAfter($previous)) {
                         throw new Exception(Yii::t('app', 'Failed to update the node'));
                     }
                 
                 // Or else, move as first
                 } else {
                 
                     if (!$model->moveAsFirst($parent)) {
                         throw new Exception(Yii::t('app', 'Failed to update the node'));
                     }
                 
                 }
                 */
                 // Save the translations
                 foreach ($languages as $languageId => $languageName) {
                     $data = $post['Lang'][$languageId];
                     // Set the translation language and attributes
                     $model->language = $languageId;
                     $model->name = $data['name'];
                     $model->content = $data['content'];
                     if (!$model->saveTranslation()) {
                         throw new Exception(Yii::t('app', 'Failed to save the translation'));
                     }
                 }
                 $transaction->commit();
                 // Switch back to the main language
                 $model->language = Yii::$app->language;
                 // Set flash message
                 Yii::$app->getSession()->setFlash('term', Yii::t('app', '"{item}" has been updated', ['item' => $model->name]));
                 // Take appropriate action based on the pushed button
                 if (isset($post['close'])) {
                     return $this->redirect(['index']);
                 } elseif (isset($post['new'])) {
                     return $this->redirect(['create']);
                 } else {
                     return $this->redirect(['update', 'id' => $model->id]);
                 }
             }
         }
     } catch (Exception $e) {
         if (isset($transaction)) {
             $transaction->rollBack();
         }
         // Set flash message
         Yii::$app->getSession()->setFlash('term-error', $e->getMessage());
     }
     return $this->render('update', ['model' => $model, 'terms' => $model::find()->getDropDownListItems($root), 'parent_id' => $model->parents(1)->one()->id]);
 }
コード例 #19
0
 /**
  * Updates an existing Usuario model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $user = new Usuario();
     $user = $this->findModel($id);
     $modelsConocimientos = $user->conocimientos;
     $modelsConocimientos = Conocimiento::find()->where(['id_conocimiento' => $user->id_usuario])->all();
     $institucion = ArrayHelper::map(Institucion::find()->all(), 'id_institucion', 'nombre');
     $cont = Contacto::find()->where(['id_contacto' => $user->id_usuario])->one();
     $dir = Direccion::find()->where(['id_direccion' => $user->id_usuario])->one();
     $repr = Representante::find()->where(['id_representante' => $user->id_usuario])->one();
     if ($user->load(Yii::$app->request->post()) && $cont->load(Yii::$app->request->post()) && $dir->load(Yii::$app->request->post()) && $repr->load(Yii::$app->request->post())) {
         $oldIDs = ArrayHelper::map($modelsConocimientos, 'id', 'id');
         $modelsConocimientos = Model::createMultiple(Conocimiento::classname(), $modelsConocimientos);
         Model::loadMultiple($modelsConocimientos, Yii::$app->request->post());
         $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsConocimientos, 'id_conocimiento', 'id_conocimiento')));
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ArrayHelper::merge(ActiveForm::validateMultiple($modelsConocimientos), ActiveForm::validate($user));
         }
         // validate all models
         $valid = $user->validate();
         $valid = Model::validateMultiple($modelsConocimientos) && $valid;
         if ($valid) {
             $transaction = \Yii::$app->db->beginTransaction();
             try {
                 if ($flag = $user->save(false)) {
                     if (!empty($deletedIDs)) {
                         Conocimiento::deleteAll(['id' => $deletedIDs]);
                     }
                     foreach ($modelsConocimientos as $modelConocimientos) {
                         $modelConocimientos->Usuarioid_usuario = $user->id_usuario;
                         if (!($flag = $modelConocimientos->save(false))) {
                             $transaction->rollBack();
                             break;
                         }
                     }
                 }
                 if ($flag) {
                     $transaction->commit();
                     return $this->redirect(['view', 'id' => $user->id_usuario]);
                 }
             } catch (Exception $e) {
                 $transaction->rollBack();
             }
         }
         if ($repr->save() && $cont->save() && $dir->save()) {
             return $this->redirect(['view', 'id' => $user->id_usuario]);
         } else {
             return $this->redirect(['index', 'id' => $user->id_usuario]);
         }
     } else {
         return $this->render('update', ['user' => $user, 'cont' => $cont, 'dir' => $dir, 'repr' => $repr, 'institucion' => $institucion, 'modelsConocimientos' => empty($modelsConocimientos) ? [new Conocimiento()] : $modelsConocimientos]);
     }
 }
コード例 #20
0
ファイル: groupcreate.php プロジェクト: seans888/SMF-Project
$users = User::find()->all();
$scholars = Scholar::find()->all();
$model = new Subject();
$modelCustomer = new Grade();
$modelsAddress = [new Grade()];
foreach ($users as $user) {
    foreach ($scholars as $scholar) {
        if ($user->username == $username && $user->id == $scholar->scholar_user_id) {
            $modelCustomer->subject_scholar_scholar_id = $scholar->scholar_id;
            if ($modelCustomer->load(Yii::$app->request->post())) {
                $modelsAddress = GroupGrade::createMultiple(Grade::classname());
                GroupGrade::loadMultiple($modelsAddress, Yii::$app->request->post());
                // ajax validation
                if (Yii::$app->request->isAjax) {
                    Yii::$app->response->format = Response::FORMAT_JSON;
                    return ArrayHelper::merge(ActiveForm::validateMultiple($modelsAddress), ActiveForm::validate($modelCustomer));
                }
                // validate all models
                $valid = $modelCustomer->validate();
                $valid = GroupGrade::validateMultiple($modelsAddress) && $valid;
                if ($valid) {
                    $transaction = \Yii::$app->db->beginTransaction();
                    try {
                        // if($flag = $modelCustomer->save(false)){
                        foreach ($modelsAddress as $modelAddress) {
                            $modelAddress->subject_scholar_scholar_id = $modelCustomer->subject_scholar_scholar_id;
                            $modelAddress->grade_school_year_start = $modelCustomer->grade_school_year_start;
                            $modelAddress->grade_school_year_end = $modelCustomer->grade_school_year_end;
                            $selectSchool = ArrayHelper::map(Scholar::find()->where(['scholar_id' => $modelAddress->subject_scholar_scholar_id])->all(), 'school_school_id', 'school_school_id');
                            $schoolID = array_values($selectSchool)[0];
                            $modelAddress->subject_scholar_school_school_id = $schoolID;
コード例 #21
0
 /**
  * Performs validation on the provided model and $_POST data
  *
  * @param \infoweb\pages\models\Page $model The page model
  * @param array $post The $_POST data
  * @return array
  */
 protected function validateModel($model, $post)
 {
     $languages = Yii::$app->params['languages'];
     // Populate the model with the POST data
     $model->load($post);
     // Parent is root
     if (empty($post[StringHelper::basename(MenuItem::className())]['parent_id'])) {
         $model->parent_id = 0;
         $model->level = 0;
     } else {
         $parent = MenuItem::findOne($post[StringHelper::basename(MenuItem::className())]['parent_id']);
         $model->parent_id = $parent->id;
         $model->level = $parent->level + 1;
     }
     // Create an array of translation models and populate them
     $translationModels = [];
     // Insert
     if ($model->isNewRecord) {
         foreach ($languages as $languageId => $languageName) {
             $translationModels[$languageId] = new MenuItemLang(['language' => $languageId]);
         }
         // Update
     } else {
         $translationModels = ArrayHelper::index($model->getTranslations()->all(), 'language');
     }
     Model::loadMultiple($translationModels, $post);
     // Validate the model and translation
     $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
     // Return validation in JSON format
     Yii::$app->response->format = Response::FORMAT_JSON;
     return $response;
 }
コード例 #22
0
ファイル: Table1Controller.php プロジェクト: vn2015/work2
 public function actionUpdate($id)
 {
     $modelorder = $this->findModel($id);
     $modelsorders = $modelorder->table1s;
     if ($modelorder->load(Yii::$app->request->post())) {
         $oldIDs = ArrayHelper::map($modelsorders, 'id', 'id');
         $modelsorders = Model::createMultiple(Table1::classname(), $modelsorders);
         Model::loadMultiple($modelsorders, Yii::$app->request->post());
         $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsorders, 'id', 'id')));
         // ajax validation
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ArrayHelper::merge(ActiveForm::validateMultiple($modelsorders), ActiveForm::validate($modelorder));
         }
         // validate all models
         $valid = $modelorder->validate();
         $valid = Model::validateMultiple($modelsorders) && $valid;
         if ($valid) {
             $transaction = \Yii::$app->db->beginTransaction();
             try {
                 if ($flag = $modelorder->save(false)) {
                     if (!empty($deletedIDs)) {
                         Table1::deleteAll(['id' => $deletedIDs]);
                     }
                     foreach ($modelsorders as $modelTable1) {
                         $modelTable1->order_id = $modelorder->id;
                         if (!($flag = $modelTable1->save(false))) {
                             $transaction->rollBack();
                             break;
                         }
                     }
                 }
                 if ($flag) {
                     $transaction->commit();
                     return $this->redirect(['update', 'id' => $modelorder->id]);
                 }
             } catch (Exception $e) {
                 $transaction->rollBack();
             }
         }
     }
     return $this->render('update', ['modelorder' => $modelorder, 'modelsorders' => empty($modelsorders) ? [new Table1()] : $modelsorders]);
 }
コード例 #23
0
 /**
  * Updates an existing Stockin 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);
     $modelDetails = $model->stockinDetails;
     if ($model->load(Yii::$app->request->post())) {
         $oldIDs = ArrayHelper::map($modelDetails, 'id', 'id');
         $modelDetails = Stockin::createMultiple(StockinDetail::classname(), $modelDetails);
         Stockin::loadMultiple($modelDetails, Yii::$app->request->post());
         $deleteIDS = array_diff($oldIDs, array_filter(ArrayHelper::map($modelDetails, 'id', 'id')));
         //ajax validation
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ArrayHelper::merge(ActiveForm::validateMultiple($modelDetails), ActiveForm::validate($model));
         }
         // set the time
         if ($model->time) {
             date_default_timezone_set("Asia/ShangHai");
             $model->time .= "  " . date("H:i:s");
         }
         //validate all models
         $valid = $model->validate();
         $valid = Stockin::validateMultiple($modelDetails) && $valid;
         if ($valid) {
             $transcation = Yii::$app->db->beginTransaction();
             try {
                 if ($flag = $model->save(false)) {
                     if (!empty($deleteIDS)) {
                         StockinDetail::deleteAll(['id' => $deleteIDS]);
                     }
                     foreach ($modelDetails as $modelDetail) {
                         $modelDetail->stockin_id = $model->id;
                         if (!($flag = $modelDetail->save(false))) {
                             $transcation->rollBack();
                         }
                     }
                 }
                 if ($flag) {
                     $transcation->commit();
                     return $this->redirect(['view', 'id' => $model->id]);
                 }
             } catch (Exception $e) {
                 $transcation->rollBack();
             }
         }
     }
     return $this->render('update', ['model' => $model, 'modelDetails' => empty($modelDetails) ? [new StockinDetail()] : $modelDetails]);
 }
コード例 #24
0
 /**
  * Updates a particular model.
  * If update is successful, the browser will be redirected to the 'index' page.
  * @param integer $id the ID of the model to be updated
  * @return string|\yii\web\Response
  * @throws \yii\db\Exception
  * @throws \yii\web\ForbiddenHttpException
  * @throws \yii\web\NotFoundHttpException
  */
 public function actionUpdate($id = null)
 {
     if (!Yii::$app->user->can($id === null ? 'usr.create' : 'usr.update')) {
         throw new \yii\web\ForbiddenHttpException(Yii::t('yii', 'You are not authorized to perform this action.'));
     }
     /** @var ProfileForm $profileForm */
     $profileForm = $this->module->createFormModel('ProfileForm', 'manage');
     $profileForm->detachBehavior('captcha');
     if ($id !== null) {
         $profileForm->setIdentity($identity = $this->loadModel($id));
         $profileForm->setAttributes($identity->getIdentityAttributes());
     }
     $loadedProfile = $profileForm->load($_POST);
     /** @var PasswordForm $passwordForm */
     $passwordForm = $this->module->createFormModel('PasswordForm', 'register');
     $loadedPassword = isset($_POST[$passwordForm->formName()]) && trim($_POST[$passwordForm->formName()]['newPassword']) !== '' && $passwordForm->load($_POST);
     if (Yii::$app->request->isAjax) {
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         $models = [];
         if ($loadedProfile) {
             $models[] = $profileForm;
         }
         if ($loadedPassword) {
             //$models[] = $passwordForm;
         }
         return \yii\widgets\ActiveForm::validateMultiple($models);
     }
     /**
      * @todo Check for detailed auth items
      */
     $canUpdateAttributes = Yii::$app->user->can('usr.update.attributes');
     $canUpdatePassword = Yii::$app->user->can('usr.update.password');
     $canUpdateAuth = Yii::$app->user->can('usr.update.auth');
     $flashes = ['success' => [], 'error' => []];
     if ($loadedProfile) {
         if ($profileForm->getIdentity() instanceof PictureIdentityInterface && !empty($profileForm->pictureUploadRules)) {
             $profileForm->picture = \yii\web\UploadedFile::getInstance($profileForm, 'picture');
         }
         $updatePassword = $canUpdatePassword && $loadedPassword;
         if ($profileForm->validate() && (!$updatePassword || $passwordForm->validate())) {
             $trx = Yii::$app->db->beginTransaction();
             $oldEmail = $profileForm->getIdentity()->getEmail();
             if ($canUpdateAttributes && !$profileForm->save($this->module->requireVerifiedEmail) || $updatePassword && !$passwordForm->resetPassword($profileForm->getIdentity())) {
                 $trx->rollback();
                 Yii::$app->session->setFlash('error', Yii::t('usr', 'Failed to register a new user.') . ' ' . Yii::t('usr', 'Try again or contact the site administrator.'));
             } else {
                 if ($canUpdateAuth) {
                     $this->updateAuthItems($id, $profileForm);
                 }
                 $trx->commit();
                 if ($this->module->requireVerifiedEmail && $oldEmail != $profileForm->getIdentity()->email) {
                     if ($this->sendEmail($profileForm, 'verify')) {
                         Yii::$app->session->setFlash('success', Yii::t('usr', 'An email containing further instructions has been sent to the provided email address.'));
                     } else {
                         Yii::$app->session->setFlash('error', Yii::t('usr', 'Failed to send an email.') . ' ' . Yii::t('usr', 'Try again or contact the site administrator.'));
                     }
                 }
                 if (!Yii::$app->session->hasFlash('success')) {
                     Yii::$app->session->setFlash('success', Yii::t('manager', 'User account has been successfully created or updated.'));
                 }
                 return $this->redirect(['index']);
             }
         }
     }
     return $this->render('update', ['id' => $id, 'profileForm' => $profileForm, 'passwordForm' => $passwordForm]);
 }
コード例 #25
0
 /**
  * Updates an existing Monitoring1 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);
     $modelsStr = $model->mon1str;
     if (!Yii::$app->user->can('admin')) {
         if ($model->user_id != Yii::$app->user->id) {
             $this->redirect(['index']);
         }
     }
     if (!Yii::$app->user->can('admin')) {
         if ($model->status == 1) {
             $this->redirect(['index']);
         }
     }
     $months = Month::find()->all();
     $years = Year::find()->all();
     //        $model->user_id = Yii::$app->user->id;
     if ($model->load(Yii::$app->request->post())) {
         $model->date = date('Y-m-d', strtotime($model->date));
         if (!Monitoring1::find()->where(['date' => $model->date, 'user_id' => Yii::$app->user->id])->one()) {
             if ($model->save()) {
                 $oldIDs = ArrayHelper::map($modelsStr, 'id', 'id');
                 $modelsStr = Model::createMultiple(Mon1str::classname(), $modelsStr);
                 Model::loadMultiple($modelsStr, Yii::$app->request->post());
                 $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsStr, 'id', 'id')));
                 // ajax validation
                 if (Yii::$app->request->isAjax) {
                     Yii::$app->response->format = Response::FORMAT_JSON;
                     return ArrayHelper::merge(ActiveForm::validateMultiple($modelsStr), ActiveForm::validate($model));
                 }
                 // validate all models
                 $valid = $model->validate();
                 $valid = Model::validateMultiple($modelsStr) && $valid;
                 if ($valid) {
                     $transaction = \Yii::$app->db->beginTransaction();
                     try {
                         if ($flag = $model->save(false)) {
                             if (!empty($deletedIDs)) {
                                 Mon1str::deleteAll(['id' => $deletedIDs]);
                             }
                             foreach ($modelsStr as $modelStr) {
                                 $modelStr->monitoring1_id = $model->id;
                                 if (!($flag = $modelStr->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, 'months' => $months, 'years' => $years, 'modelsStr' => empty($modelsStr) ? [new Mon1str()] : $modelsStr]);
 }
 /**
  * Updates an existing Image model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param string $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     $gallery = Gallery::findOne(Yii::$app->session->get('gallery.gallery-id'));
     if (Yii::$app->request->getIsPost()) {
         $post = Yii::$app->request->post();
         // Ajax request, validate the models
         if (Yii::$app->request->isAjax) {
             // Populate the model with the POST data
             $model->load($post);
             // Create an array of translation models and populate them
             $translationModels = ArrayHelper::index($model->getTranslations()->all(), 'language');
             Model::loadMultiple($translationModels, $post);
             // Validate the model and translation
             $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
             // Return validation in JSON format
             Yii::$app->response->format = Response::FORMAT_JSON;
             return $response;
             // Normal request, save models
         } else {
             // Wrap everything in a database transaction
             $transaction = Yii::$app->db->beginTransaction();
             // Validate the main model
             if (!$model->load($post)) {
                 return $this->render('update', ['model' => $model]);
             }
             // Add the translations
             foreach (Yii::$app->request->post(StringHelper::basename(ImageLang::className()), []) as $language => $data) {
                 foreach ($data as $attribute => $translation) {
                     $model->translate($language)->{$attribute} = $translation;
                 }
             }
             if (!$model->save()) {
                 return $this->render('update', ['model' => $model]);
             }
             $transaction->commit();
             // Set flash message
             Yii::$app->getSession()->setFlash('image-success', Yii::t('app', '{item} has been updated', ['item' => $model->name]));
             return $this->redirect('index');
         }
     }
     return $this->render('update', ['model' => $model, 'gallery' => $gallery]);
 }
コード例 #27
0
 /**
  * Updates an existing Poll 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->isLocked()) {
         throw new HttpException(403, Yii::t('app', 'This poll cannot be edited because it has already been accessed by a voter'));
     }
     $modelOptions = $model->options;
     if ($model->load(Yii::$app->request->post())) {
         $oldIDs = ArrayHelper::map($modelOptions, 'id', 'id');
         $modelOptions = Model::createMultiple(Option::classname(), $modelOptions);
         Model::loadMultiple($modelOptions, Yii::$app->request->post());
         $deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelOptions, 'id', 'id')));
         // ajax validation
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ArrayHelper::merge(ActiveForm::validateMultiple($modelOptions), ActiveForm::validate($model));
         }
         // validate all models
         $valid = $model->validate();
         $valid = Model::validateMultiple($modelOptions) && $valid;
         if ($valid) {
             $transaction = \Yii::$app->db->beginTransaction();
             try {
                 if ($flag = $model->save(false)) {
                     if (!empty($deletedIDs)) {
                         Option::deleteAll(['id' => $deletedIDs]);
                     }
                     foreach ($modelOptions as $modelOption) {
                         $modelOption->poll_id = $model->id;
                         if (!($flag = $modelOption->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, 'modelOptions' => empty($modelOptions) ? [new Option(), new Option()] : $modelOptions]);
 }
コード例 #28
0
ファイル: SiteController.php プロジェクト: an2riy/purina
 public function actionSignup()
 {
     $model = new SignupForm();
     $model_pets = [];
     for ($i = 1; $i < Yii::$app->params['countPetsInSignup']; $i++) {
         $model_pets["pet_{$i}"] = new PetForm();
     }
     if ($model->load(Yii::$app->request->post()) && Model::loadMultiple($model_pets, Yii::$app->request->post())) {
         $model_pet_valid = [];
         for ($i = 1; $i <= $model->count_pets; $i++) {
             $model_pet_valid["pet_{$i}"] = clone $model_pets["pet_{$i}"];
         }
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             $erros = ActiveForm::validate($model);
             $erros_pets = ActiveForm::validateMultiple($model_pet_valid);
             return array_merge($erros, $erros_pets);
         }
         if (Model::validateMultiple($model_pet_valid) && $model->signup()) {
             foreach ($model_pet_valid as $pet) {
                 try {
                     /**@var $pet PetForm */
                     if (!PurinaAuth::init()->createUserPet($pet->name, $pet->gender, $pet->year, $pet->month, $pet->breed)) {
                         $data = PurinaAuth::getData();
                         if ($data->message) {
                             Yii::$app->session->setFlash("error", $data->message);
                         }
                     }
                 } catch (\Exception $e) {
                     break;
                 }
             }
             return $this->goHome();
         } else {
             $validation = true;
             for ($i = 1; $i <= $model->count_pets; $i++) {
                 /**
                  * @var $model_valid PetForm
                  */
                 $model_valid = $model_pet_valid["pet_{$i}"];
                 if ($model_valid->hasErrors()) {
                     $validation = false;
                     $model_pets["pet_{$i}"] = clone $model_valid;
                 }
             }
             if (!$validation) {
                 $model->validate();
             }
         }
     }
     return $this->render('signup', ['model' => $model, 'model_pets' => $model_pets]);
 }
コード例 #29
0
 /**
  * Updates an existing Term model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $languages = Yii::$app->params['languages'];
     // Load the model with default values
     $model = $this->findModel($id);
     $returnOptions = ['model' => $model];
     try {
         if (Yii::$app->request->getIsPost()) {
             $post = Yii::$app->request->post();
             // Ajax request, validate the models
             if (Yii::$app->request->isAjax) {
                 // Populate the model with the POST data
                 $model->load($post);
                 // Create an array of translation models
                 $translationModels = [];
                 foreach ($languages as $languageId => $languageName) {
                     $translationModels[$languageId] = $model->getTranslation($languageId);
                 }
                 // Populate the translation models
                 Model::loadMultiple($translationModels, $post);
                 // Validate the model and translation models
                 $response = array_merge(ActiveForm::validate($model), ActiveForm::validateMultiple($translationModels));
                 // Return validation in JSON format
                 Yii::$app->response->format = Response::FORMAT_JSON;
                 return $response;
                 // Normal request, save models
             } else {
                 // Wrap the everything in a database transaction
                 $transaction = Yii::$app->db->beginTransaction();
                 // Save the main model
                 if (!$model->load($post) || !$model->save()) {
                     return $this->render('update', $returnOptions);
                 }
                 // Save the translations
                 foreach ($languages as $languageId => $languageName) {
                     $data = $post['Lang'][$languageId];
                     // Set the translation language and attributes
                     $model->language = $languageId;
                     $model->name = $data['name'];
                     $model->content = $data['content'];
                     if (!$model->saveTranslation()) {
                         return $this->render('update', $returnOptions);
                     }
                 }
                 $transaction->commit();
                 // Switch back to the main language
                 $model->language = Yii::$app->language;
                 // Set flash message
                 Yii::$app->getSession()->setFlash('term', Yii::t('app', '{item} has been updated', ['item' => $model->name]));
                 // Take appropriate action based on the pushed button
                 if (isset($post['close'])) {
                     return $this->redirect(['index']);
                 } elseif (isset($post['new'])) {
                     return $this->redirect(['create']);
                 } else {
                     return $this->redirect(['update', 'id' => $model->id]);
                 }
             }
         }
     } catch (Exception $e) {
         if (isset($transaction)) {
             $transaction->rollBack();
         }
         // Set flash message
         Yii::$app->getSession()->setFlash('term-error', $e->getMessage());
     }
     return $this->render('update', $returnOptions);
 }
コード例 #30
0
 public function update(AdminAction $adminAction)
 {
     /**
      * @var $model CmsContentElement
      */
     $model = $this->model;
     $relatedModel = $model->relatedPropertiesModel;
     $shopProduct = ShopProduct::find()->where(['id' => $model->id])->one();
     $productPrices = [];
     if (!$shopProduct) {
         $shopProduct = new ShopProduct(['id' => $model->id]);
         $shopProduct->save();
     } else {
         if ($typePrices = ShopTypePrice::find()->where(['!=', 'def', Cms::BOOL_Y])->all()) {
             foreach ($typePrices as $typePrice) {
                 $productPrice = ShopProductPrice::find()->where(['product_id' => $shopProduct->id, 'type_price_id' => $typePrice->id])->one();
                 if (!$productPrice) {
                     $productPrice = new ShopProductPrice(['product_id' => $shopProduct->id, 'type_price_id' => $typePrice->id]);
                 }
                 if ($post = \Yii::$app->request->post()) {
                     $data = ArrayHelper::getValue($post, 'prices.' . $typePrice->id);
                     $productPrice->load($data, "");
                 }
                 $productPrices[] = $productPrice;
             }
         }
     }
     $rr = new RequestResponse();
     if (\Yii::$app->request->isAjax && !\Yii::$app->request->isPjax) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         $shopProduct->load(\Yii::$app->request->post());
         return \yii\widgets\ActiveForm::validateMultiple([$model, $relatedModel, $shopProduct]);
     }
     if ($rr->isRequestPjaxPost()) {
         $model->load(\Yii::$app->request->post());
         $relatedModel->load(\Yii::$app->request->post());
         $shopProduct->load(\Yii::$app->request->post());
         /**
          * @var $productPrice ShopProductPrice
          */
         foreach ($productPrices as $productPrice) {
             if ($productPrice->save()) {
             } else {
                 \Yii::$app->getSession()->setFlash('error', \Yii::t('skeeks/shop/app', 'Check the correctness of the prices'));
             }
         }
         if ($model->save() && $relatedModel->save() && $shopProduct->save()) {
             \Yii::$app->getSession()->setFlash('success', \Yii::t('skeeks/shop/app', 'Saved'));
             if (\Yii::$app->request->post('submit-btn') == 'apply') {
             } else {
                 return $this->redirect($this->indexUrl);
             }
             $model->refresh();
         } else {
             $errors = [];
             if ($model->getErrors()) {
                 foreach ($model->getErrors() as $error) {
                     $errors[] = implode(', ', $error);
                 }
             }
             \Yii::$app->getSession()->setFlash('error', \Yii::t('skeeks/shop/app', 'Could not save') . $errors);
         }
     }
     if (!$shopProduct->baseProductPrice) {
         $baseProductPrice = new ShopProductPrice(['type_price_id' => \Yii::$app->shop->baseTypePrice->id, 'currency_code' => \Yii::$app->money->currencyCode, 'product_id' => $model->id]);
         $baseProductPrice->save();
     }
     return $this->render('_form', ['model' => $model, 'relatedModel' => $relatedModel, 'shopProduct' => $shopProduct, 'productPrices' => $productPrices, 'baseProductPrice' => $shopProduct->getBaseProductPrice()->one()]);
 }