【发布时间】:2014-05-11 07:45:56
【问题描述】:
我正在尝试使用 datamapper 来帮助我并将 file_name 存储在数据库中。首先,我使用 Codeigniter 手册中给出的 do_upload 的基本示例来完成它,最后我写了 3 行 datamapper 来查看一个带有 id 和 url 的简单表。我运行它,它保存得很好。
现在的问题是当我尝试在我的 add_article 方法中调用 do_upload 函数时,当文章与图片一起上传时,以保存文章的所有详细信息 + 上传的图片名称。但是它不起作用,我尝试了各种类型。这是我所拥有的:
在我的控制器中:
public function add_article($id = NULL)
{
$articles = new Article_model();
$article = $articles->where('id', $id)->get();
$article->title = $this->input->post('title');
$article->text = $this->input->post('text');
// Try to upload the image
if ($this->input->post('submit'))
{
$this->do_upload();
}
if ($article->save())
{
echo '<p>You have successfully added an article</p>';
redirect('admin/article/');
}
else
{
echo '<p>' . $article->error->string . '</p>';
}
}
public function do_upload()
{
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path,
);
$this->load->library('upload' , $config);
$this->upload->do_upload();
$image_data = $this->upload->data();
$article = new Article_model();
$article->url = $image_data['file_name'];
$article->save();
}
我的看法:
<?php echo form_open_multipart('admin/article/add_article'); ?>
<table class="table">
<tr>
<td>Title</td>
<td><?php echo form_input('title', set_value('title', $article->title)); ?></td>
</tr>
<tr>
<td>Image</td>
<td><?php echo form_upload('userfile'); ?></td>
</tr>
<tr>
<td>Body</td>
<td><?php echo form_textarea('text', set_value('text' , $article->text), 'class="tinymce"'); ?></td>
</tr>
<tr>
<td></td>
<td><?php echo form_submit('submit', 'Save', 'class="btn btn-primary"'); ?></td>
</tr>
</table>
【问题讨论】:
-
您遇到的错误是什么?
-
我没有收到错误,文件名没有进入数据库:(
-
我明白了,我怀疑这是因为在您的
do_upload函数中,您正在实例化一个新的Article_Model,而不是更新您之前插入的那个。尝试将您的代码更改为我将在答案中输入的内容。
标签: php codeigniter datamapper codeigniter-datamapper