0

在这里你可以找到: https ://github.com/joostvanveen/build-a-cms-with-codeigniter 它在核心文件夹中有 MY_Model,在库中有 Admin_Controller,我在新网站中使用的源代码。我喜欢这种数据流动的方式,但我在上传图像和更新图像时遇到了问题。图片上传很顺利,但是每当我编辑数据时,数据库中的图片名称就消失了。它更新了它们。我知道如何停止更新其他字段,但相同的方法不适用于图像。

这就是数据的保存方式,用户模型(user_m)具有验证和新变量以及表的选择。函数“保存”在 MY_Model 中定义。user_m 扩展了 MY_Model 而不是默认的 CI_Model。下面的代码插入和更新。它在保存函数中定义。如果提供了 $id 则更新完成,否则插入新项目。

        // Insert
    if ($id === NULL) {
        !isset($data[$this->_primary_key]) || $data[$this->_primary_key] = NULL;
        $this->db->set($data);
        $this->db->insert($this->_table_name);
        $id = $this->db->insert_id();
    }
    // Update
    else {
        $filter = $this->_primary_filter;
        $id = $filter($id);
        $this->db->set($data);
        $this->db->where($this->_primary_key, $id);
        $this->db->update($this->_table_name);
    }

这就是它在用户控制器中的调用方式::

$this->user_m->save($data, $id);

这就是 $data 的定义方式:

$data = $this->user_m->array_from_post(array('name', 'email', 'password'));

array_from_post 函数在 MY_Model 中定义为:

public function array_from_post($fields){

    $data = array();
    foreach ($fields as $field) {
        $data[$field] = $this->input->post($field);
    }
    return $data;
}

我在 tutsplus 论坛上找到了这个:

if(isset($data['password'])){ $data['password'] = $this->user_m->$data['password']; }else{ unset($data['password']); }

此代码在未更新时简单地取消设置 $data['password'] 并且可以更新其他字段而不更改它在数据库中的值。

有什么办法可以为图像更新做同样的事情吗?如果需要,我可以提供更多源代码。

有人熟悉 JoostVanVeen 的课程吗?数据就像他的课程一样流动。

4

0 回答 0