修改网站源码,给电子商城的商品添加图片时商品id为0的原因。花了几个小时查找原因。后来,由于PictureControl.class.php是复制CourseControl.class.php而来,于是对比了这两个文件,在CourseControl.class.php找到了不一样的关键几条语句:
if(IS_POST){
$data = [
'title' => I('title','post','html'), //标题
'category_id' => I('category_id','post','id'), //栏目ID
'price' => I('price','post','float'), //价格
'show' => I('save','post','bool') ? 'no' : 'yes', //是否发布
'content' => I('content','post','string'), //内容
];
在PictureControl.class.php这几条语句改成了这样:
if(IS_POST){
//查出原来图片url
//给$data['course_id']赋值
$data = [
'url' => ($this->id)?$Picture->select('url', ['id'=>$this->id], 'fetchColumn'):'',
'course_id' => I('course_id', 'get', 'id'),
'title' => I('title', 'get', 'html'),
'sort' => I('sort', 'get', 'int')
];
后来,将PictureControl.class.php这几条语句的get改成post,解决了该问题。
原因是这样的,修改代码时,删除了一些代码,然后再参考新文件上方的代码添加了这几行代码,上方代码使用了get,新添加的代码照抄了上方的部分代码。添加以后没有仔细考虑,从而导致了该问题。get方式是通过url传递参数,post方式是通过表单传递参数。