[Model|load()]的使用 [ 技术分享 ]
问题描述:我将表单数据整理为一个json字符串,通过ajax post 到服务器,服务器接受后解析为一个数组$arr.然后调用$model->load($arr)
,结果总是返回false。
问题原因:load函数有两个参数 public function load($data, $formName = null)
,当调用时不填formName的时候,函数内部会自动调用$model->formName()
,这个函数将返回与模型名对应的表单名称,所以load将会执行访问$arr[$this->formName()]
,而这个变量并没有在我的数组里。所以导致load函数返回false;
解决办法:$model->load(['formName'=>$arr],'formName');
共 6 条回复
-
今天遇到类似的问题,通过ajax传递过来的数据,回调的数据一直不正确,后来发现是这个问题。
贴下源代码public function load($data, $formName = null) { //$scope是通过类反射获取的表单名 $scope = $formName === null ? $this->formName() : $formName; if ($scope === '' && !empty($data)) { $this->setAttributes($data); return true; //如果$data中存在表单名,则设置属性,否则返回false } elseif (isset($data[$scope])) { $this->setAttributes($data[$scope]); return true; } else { return false; } }
解决方法:$model->load(Yii::$app->request->post(),'')
thumber
注册时间:2015-05-06
最后登录:2018-09-13
在线时长:21小时32分
最后登录:2018-09-13
在线时长:21小时32分
- 粉丝9
- 金钱1140
- 威望0
- 积分1350