标签:alt isset iss empty model 有一个 return load data
当前有一个 action 如下:
public function actionIndex()
{
$model = new ViewFresult();
if ($model->load(Yii::$app->request->get())){
// 这部分代码不执行
$data = $model->searchByName();
} else {
$data = $model->getAllOrderByIdDesc();
}
return $this->render(‘index‘, [
‘model‘ => $model,
‘data‘ => $data,
‘pagination‘ => $model->getPagination()
]);
}
注释的那一块代码不执行,显然是 $model->load(Yii::$app->request->get())
返回了 false。这个 load()
方法的源码:
public function load($data, $formName = null)
{
$scope = $formName === null ? $this->formName() : $formName;
if ($scope === ‘‘ && !empty($data)) {
$this->setAttributes($data);
return true;
} elseif (isset($data[$scope])) {
$this->setAttributes($data[$scope]);
return true;
}
return false;
}
其中 $formName
是当前表单的名称,这个表单名称其实是根据模型(Model)的名称自动生成的。可以在控制器中输出 $model->formName()
来查看。
返回 false 的一个原因,有可能就是 Yii::$app->request->get()
获取的数据中没有这个 $formName
的值,可以在控制器输出看一下。这个值应该与模型(Model)的名称保持一致。
例如:我的代码有 $model = new ViewFresult();
,我的模型(Model)名称就是 ViewFresult,所以打印 Yii::$app->request->get()
获取的数据就有:
注意这仅是可能的原因之一,按照上面的方法检查。返回false的原因是很多的,但是源码很简单,可以慢慢梳理。
Yii2——$model->load() returns false
标签:alt isset iss empty model 有一个 return load data
原文地址:https://www.cnblogs.com/alanabc/p/9415130.html