yii2-dynamicform icon indicating copy to clipboard operation
yii2-dynamicform copied to clipboard

Invalid Configuration – yii\base\InvalidConfigException

Open xiaoping87 opened this issue 8 years ago • 2 comments

I've got error Invalid Configuration – yii\base\InvalidConfigException. The 'model' property must be set and must extend from '\yii\base\Model'.

what should I do to fix this?

capture

xiaoping87 avatar Dec 23 '16 02:12 xiaoping87

Try this..

if (isset($_POST['Questions'][0][0])) { foreach......... ......your code }

arjunweb avatar Feb 20 '18 06:02 arjunweb

Hi, I am also facing the same error exactly correct.

Below is my actionUpdate()

public function actionUpdate($id)
    {

		$model = $this->findModel($id);
		$modelsShortTerm=$model->shorttermgoals;
		$modelsShortTermMissional = [];
        $oldShortTermMissional = [];

        if (!empty($modelsShortTerm)) {
            foreach ($modelsShortTerm as $indexShortTerm => $modelShortTerm) {
                $missional = $modelShortTerm->shorttermmissionalgoals;
                $modelsShortTerm[$indexShortTerm] = $missional;
                $oldShortTermMissional = ArrayHelper::merge(ArrayHelper::index($missional, 'ShortTermMissionalGoalId'), $oldShortTermMissional);
            }
        }

		if ($model->load(Yii::$app->request->post())) {

			$modelsShortTermMissional = [];


		$oldIDs = ArrayHelper::map($modelsShortTerm, 'ShortTermGoalsId', 'ShortTermGoalsId');

				$modelsShortTerm = Modelshortterm::createMultiple(Shorttermgoals::classname(), $modelsShortTerm);
        
				Modelshortterm::loadMultiple($modelsShortTerm, Yii::$app->request->post());

				$deletedIDs = array_diff($oldIDs, array_filter(ArrayHelper::map($modelsShortTerm, 'ShortTermGoalsId', 'ShortTermGoalsId')));


				
				$valid = $model->validate();
            	$valid = Modelshortterm::validateMultiple($modelsShortTerm) && $valid;


				$missionalId = [];
				if (isset($_POST['Shorttermmissionalgoals'][0][0])) {
                foreach ($_POST['Shorttermmissionalgoals'] as $indexShortTerm => $missional) {
                    $missionalId = ArrayHelper::merge($missionalId, array_filter(ArrayHelper::getColumn($missional, 'ShortTermMissionalGoalId')));
                    foreach ($missional as $indexMissional => $missional1) {
                        $data['Shorttermmissionalgoals'] = $missional1;
                        $modelShortTermMissional = (isset($missional1['ShortTermMissionalGoalId']) && isset($oldShortTermMissional[$missional1['ShortTermMissionalGoalId']])) ? $oldShortTermMissional[$missional1['ShortTermMissionalGoalId']] : new Shorttermmissionalgoals;
                        $modelShortTermMissional->load($data);
                        $modelsShortTermMissional[$indexShortTerm][$indexMissional] = $modelShortTermMissional;
                        $valid = $modelShortTermMissional->validate();
                    }
                }
            }

			$oldMissionalId = ArrayHelper::getColumn($oldShortTermMissional, 'ShortTermMissionalGoalId');
            $deletedMissionalId = array_diff($oldMissionalId, $missionalId);

				if ($valid) {
                $transaction = \Yii::$app->db->beginTransaction();
                try {
                    if ($flag = $model->save(false)) {
						if (! empty($deletedMissionalId)) {
                            Shorttermmissionalgoals::deleteAll(['ShortTermMissionalGoalId' => $deletedMissionalId]);
                        }
                    	if (!empty($deletedIDs)) {
                            Modelshortterm::deleteAll(['ShortTermGoalsId' => $deletedIDs]);
                        }
						foreach ($modelsShortTerm as $indexShortTerm => $modelShortTerm) {

                            if ($flag === false) {
                                break;
                            }

                            $modelShortTerm->PastorId = $model->PastorId;

                            if (!($flag = $modelShortTerm->save(false))) {
                                break;
                            }

                            if (isset($modelsShortTermMissional[$indexShortTerm]) && is_array($modelsShortTermMissional[$indexShortTerm])) {
                                foreach ($modelsShortTermMissional[$indexShortTerm] as $indexMissional => $modelShortTermMissional) {
                                    $modelShortTermMissional->ShortTermGoalsId = $modelShortTerm->ShortTermGoalsId;
                                    if (!($flag = $modelShortTermMissional->save(false))) {
                                        break;
                                    }
                                }
                            }
                        }
                       
                       
                    }
                    if ($flag) {
                        $transaction->commit();
                        return $this->redirect(['view', 'id' => $model->PastorId]);
                    }
                } catch (Exception $e) {
                    $transaction->rollBack();
                }
            }

			

            //return $this->redirect(['view', 'id' => $model->GroupId]);
        
		}else {
            return $this->render('update', [
                'model' => $model,
				'modelsShortTerm' => (empty($modelsShortTerm)) ? [new Shorttermgoals] : $modelsShortTerm,
								'modelsShortTermMissional' => (empty($modelsShortTermMissional)) ? [[new Shorttermmissionalgoals]] : $modelsShortTermMissional,
            ]);
        }
    }

IntegrityFoundation avatar Jul 02 '19 12:07 IntegrityFoundation