程勇 发表于 2012-10-23 15:55:56

DiliCMS新增分类模型时的一个bug

本帖最后由 程勇 于 2012-10-23 15:57 编辑

bug重现步骤:
1.在“分类模型管理”-“添加新分类模型”中添加一个模型
2.在分类模型管理,点击刚刚添加的那个模型的“字段管理”-“添加新字段”
随便先添加一个字段,只为测试用
3.上述动作完成后,点击“内容管理”-“刚刚添加的那个分类模型”-“添加”

到这一步的时候就报错了
Field 'path' doesn't have a default value

一看就知道是这个叫path的字段没有默认值,刚刚接触这个CMS,我也不知道这个字段具体是干啥用的
打开对应的程序文件;/shared/models/category_del.php
找到添加分类模型的那个函数:

    /**
   * 新增分类模型
   *
   * @accesspublic
   * @param   array
   * @returnbool
   */
      public function add_new_category($data)
      {
                if ($this->db->insert($this->db->dbprefix('cate_models'), $data))
                {
                        $this->load->dbforge();
                        $table = 'u_c_' . $data['name'];
                        $this->dbforge->drop_table($table);
                        $this->dbforge->add_field(array('classid' => array('type' => 'INT', 'constraint' => 5, 'unsigned' => TRUE, 'auto_increment' => TRUE)));
                        $this->dbforge->add_key('classid',TRUE);
                        $this->dbforge->add_field(array('parentid' => array('type' => 'INT', 'constraint' => 5, 'unsigned' => TRUE, 'default'=>0)));
                        $this->dbforge->add_field(array('level' => array('type' => 'INT', 'constraint' => 2, 'unsigned' => TRUE, 'default'=>1)));
                        //$this->dbforge->add_field(array('path' => array('type' => 'VARCHAR', 'constraint' => 50)));

                        // 给加一个默认值吧,由于是varchar类型的,就随便扔了个空字符串
                        $this->dbforge->add_field(array('path' => array('type' => 'VARCHAR', 'constraint' => 50, 'default' => '')));

                        $this->dbforge->create_table($table);
                        return TRUE;
                }
                return FALSE;      
      }


到这儿问题就解决掉了,但是这个值具体是干啥用的,暂时还不清楚,请有知道的告知一下{:soso_e100:}

程勇 发表于 2012-10-23 16:04:43

还发现另一个小问题:
/admin/controllers/attachment.php   line:200

"编辑器文件上传接口"(_save_post)这个函数中写数据库的时候没用前缀处理,如果用户不选择缺省的表前缀,这儿就报错啦.

解决办法是把第200行的那个insert中的表名处理一下下


$this->db->insert('dili_attachments', $upload);
换成
$this->db->insert($this->db->dbprefix('attachments'), $upload);

chslive 发表于 2012-11-23 21:52:30

果然。我也遇到了,新手。我是把数据库默认只改了
页: [1]
查看完整版本: DiliCMS新增分类模型时的一个bug