/** * 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; }
/** * 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; }