码迷,mamicode.com
首页 > 其他好文 > 详细

Yii2——$model->load() returns false

时间:2018-08-03 17:29:24      阅读:1028      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!