yii2.0 总是load 失败 [ 2.0 版本 ]
我是用ajax post表单请求的后台方法入库,_csrf也有,这是我后台接收到的数据
Array
(
[_csrf] => aGZhOHUtM0EMLyVyNHl1ByUENUkQYWQuKgc7eyQdB3AcITFPWGQLKA==
[class_name] => 阿发发送
[class_alias] => 啊打发
[is_show] => 1
[f_id] => 0
[order] => 100
)
我的model rule
public function rules()
{
return [
[['class_name','class_alias'], 'required','message'=>'{attribute}不能为空'],
[['created_at','updated_at'], 'default', 'value' => time()],
[['order'], 'default', 'value' => 100],
[['f_id', 'order', 'created_at', 'updated_at', 'is_show'], 'integer'],
[['class_name', 'class_alias'], 'string', 'max' => 50]
];
}
formname也有,
但是我用dump看总是false,不知道什么原因,能不能看到load model 报的错,求大神解决
最佳答案
-
我的Form使用了model,Form中的input的name组成
模型名称[字段名称]
,普通Form POST提交之后,如:Array ( [_csrf] => bEVmWUMwYXcFA0s2LmBRFFt9CzgnaUwdXCFQKgYHPkEgcC0dOVgUDw== [SignupForm] => Array ( [user_name] => test1 [user_email] => test@test.com [password] => 1111111 [confirm_password] => 1111111 ) )
下面是两个方法,你可以根据自己的情况使用:
你可以$.ajax中的
data
中使用{'modelName[class_name]':'阿发发送'}
这样的格式假如ajax的data是用
$('#yourformid').serialize()
传递的,你可以给你form中的表单元素的name
使用你当前$model->load()的model名称模型名称[字段名称]
,如:SignupForm['user_name']
共 2 条回复@792539542@qq.co 是,假如你用到模型的load()方法,或者使用到模型的validate()方法;这都和模型有关联了。
Zachary_Guo 觉得很赞
其他 3 个回答
-
sgj773624926 回答于 2016-07-16 09:09 举报
可以看一下源码,什么时候load方法会返回false。
public function load($data, $formName = null) { // 如果存在 yii 的 form,就使用该 form,否则就拿到所在类的名称(不含 namespace) $scope = $formName === null ? $this->formName() : $formName; if ($scope === '' && !empty($data)) { // 如果 $scope 为空字符串,且 $data不为空,就设置属性 // 即 $formName 为空字符串,且 $data不为空 $this->setAttributes($data); return true; } elseif (isset($data[$scope])) { // 否则,必须存在 $data[$scope],使用 $data[$scope] 去设置属性 $this->setAttributes($data[$scope]); return true; } else { return false; } }
当不满足
$scope === '' && !empty($data)
和isset($data[$scope])
这两个条件的时候会返回false。
这里你没有粘贴调用load时的写法,所以你自己对照一下,应该很快能找到原因共 1 条回复Zachary_Guo 觉得很赞
醉丶春风 上海
注册时间:2015-11-23
最后登录:2024-09-25
在线时长:819小时28分
最后登录:2024-09-25
在线时长:819小时28分
- 粉丝8
- 金钱11885
- 威望100
- 积分21075