thinkphp 自动验证通过但是进不去create()找不到原因
怪我咯
怪我咯 2017-04-11 09:09:18
0
1
429

模型自动验证已经通过但是到了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()
最开始因为开启令牌,一直提示令牌错误,后来我吧令牌配置关了就这样了 找了好长时间,求大神指点

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(1)
黄舟

问题可以算是解决了 我觉得这个方法不完美 希望哪路大神给我店思路
我在网上看到些答案 说是: create()有bug 但不我这么认为,绝对是有哪些问题我忽律了
我找到的解决方法:
1.数据库的表不是utf-8 可能会出现这种情况
2.和表里的字段不一样
3.create()函数有bug 应用 === false 进行判断 确保通过create(); 我用的是这种用,但这种解决方法不完美,治标不治本.

//添加配置项
    public function stores($post){
        if($this->create() === false){//验证判断
            return ['status' => 'fault' ,'message' => $this->getError()];//如果没通过
        }else{//通过
            $data['config_id'] = 1;//给id是为了走保存方法
            $data['web'] = json_encode($post);//存成json格式,有利于扩展字段而不用添加表字段
//            动作
            $action = isset($data[$this->pk])?"save" :"add";//动作判断
            $result =$this->$action($data);
//            成功返回内容
            return ['status' => 'success' , 'data' =>$result ,'message' => '添加成功' ];
        }
    }
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!