在 Gii 创建的我的控制器中,通常会看到以下内容:
if($model->load(Yii::$app->request->post()) && $model->save()){
//.....do something such as redirect after save....//
}else
{
//.....render the form in initial state.....//
}
这可以测试是否从我的表单发送 POST && 我指定的模型已保存发布的信息(据我了解)。
我已经在我自己创建的控制器中进行了类似的操作,但在某些情况下,这个条件会被绕过,因为这些条件中的一个或两个都失败了,并且在我提交表单之后表单只是以初始状态呈现,我可以看到POST 通过网络传输。
有人可以解释为什么这个条件会失败吗?我相信问题出在 'Yii::$app->request->post()' 上,因为我已经删除了 '$model->save()' 部分进行测试,但它仍然绕过了条件。
在我的控制器中失败的示例代码:
public function actionFreqopts()
{
$join = new FreqSubtypeJoin();
$options = new Frequency();
$model = new CreateCrystal();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$model->insertFreqopts();
return $this->redirect(['fieldmap', 'id' => $join->id]);
} else {
return $this->render('freqopts', ['join' => $join, 'options' => $options]);
}
}
我最初的想法是我没有指定正确的“$model”,因为我试图将发布的数据保存到FreqSubtypeJoin()
这种情况下,$model
但是CreateCrystal();
,即使我在这个条件下更改模型,它仍然失败。如果可能的话,如果有人可以用外行的术语简要解释“加载”方法实际上在做什么,那将会很有帮助。