模型自动验证已经通过但是到了create这里就被拦截了
控制器代码:
p()是自己写的打印函数
public function setweb(){
// 提交保存
if(IS_POST){//提交判定
// 调用保存方法
$result = $this->config->store(I('post.'));
p($result);
}
$data = $this->config->where("config_id = 1")->getField('web');
$data = json_decode($data,true);
p($data);
// 分配数据
$this->assign('data',$data);
// 载入页面
$this->display();
}
模型代码:
class ConfigModel extends BaseModel{
// 指定主键
protected $pk = 'config_id';
// 指定表
protected $tableName = 'config';
// 自动验证---------------------------------------------------------------自动验证
protected $_validate = [
['webname','require','网站名称不能为空!'],
// ['number','require','备案号不能为空!'],
// ['intro','require','网站描述不能为空!']
];
// 方法开始*******************************************************方法开始
//添加配置项
public function store($post){
if($this->create()){
$data['config_id'] = 1;
$data['web'] = json_encode($post);
p($data);
$action = isset($data[$this->pk])?"save" :"add";
// p($data);die;
$result =$this->$action($data);
return ['status' => 'success' , 'data' =>$result ,'message' => '1' ];
}
return ['status' => 'fault' ,'message' => $this->getError()];
}
}
在表单中 如果不填webname 会提示网站名称不能为空! 填上webname 什么也不显示 就是过不了create()
最开始因为开启令牌,一直提示令牌错误,后来我吧令牌配置关了就这样了 找了好长时间,求大神指点
问题可以算是解决了 我觉得这个方法不完美 希望哪路大神给我店思路
我在网上看到些答案 说是: create()有bug 但不我这么认为,绝对是有哪些问题我忽律了
我找到的解决方法:
1.数据库的表不是utf-8 可能会出现这种情况
2.和表里的字段不一样
3.create()函数有bug 应用 === false 进行判断 确保通过create(); 我用的是这种用,但这种解决方法不完美,治标不治本.