yii2中model使用load方法
首先说一下以往的yii2开发中model是怎样接收数据的。
- $member->load($params);
- $member->attributes = $params;
- $member->setAttributes($params);
但是现在前后端分离的背景下,我们可能会遇到$model不能被正确赋值的情况。究其原因,有两个。
一是看load方法最后还是调用了setAttributes方法,所以可以在setAttributes里面查看原因。
1 | /** |
源码注释中可以看到,第二个参数safeOnly表示:是否应该只对安全属性进行赋值。所以,我们可以使safeOnly为false,问题就可以解决了。
1 | $member->setAttributes($params, false); |
第二个原因是使用load方法时,前端不是使用yii Form提交数据。
解决方法:
1 | $member->load($params, ''); |
具体原因分析详见下方的参考。
相关文章