关于CI的快速提问。
我有一个视图,包含表单,多个文本输入字段和文件上传。 我希望能够从文本字段中获取输入,将其保存到数据库,然后上传图像。
我通过将上传代码放在控制器中实现了这一点,如果上传成功,则会调用我的模型来更新数据库。
这是“最佳做法”,还是一种可接受的做法?或者文件上传应该在模型中。这有关系吗?
基本上我的代码是:
function edit_category()
{
$config['upload_path'] = 'images/category/';
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '1000';
$config['max_width'] = '300';
$config['max_height'] = '300';
$this->load->library('upload', $config);
if(!$this->upload->do_upload())
{
$this->session->set_flashdata('status', $this->upload->display_errors());
redirect('admin/category/edit/'.$this->input->post('catID'), 'location');
}
else /*no errors, upload is successful..*/
{
$fInfo = $this->upload->data();
//$this->_createThumbnail($fInfo['file_name']);
//process form POST data.
$data = array(
'catName' => $this->input->post('catName'),
'catDesc' => $this->input->post('catDesc'),
'catImage' => $fInfo['file_name']
);
/* update the database */
$category = $this->category_model->edit_category($data, $this->input->post('catID'));
答案 0 :(得分:5)
我会把它放在模型中,因为我喜欢让我的控制器尽可能地保持苗条。我认为控制器是视图和后台处理之间的链接,而不是处理本身。 我不确定这是否是“最佳实践”。它肯定会以你的方式运作。 CodeIgniter允许您在应用mvc理论方面非常灵活。
答案 1 :(得分:0)
使用模型与数据交互,无论是数据库交互,api调用还是文件上载和下载。使用控制器运行show并调用该数据。如果与该数据交互的方法发生变化,请尽量将它们分开。大多数时候我们认为模型是一个数据库函数,但它确实应该是任何数据,无论它是如何检索的。
答案 2 :(得分:-1)
我出现了同样的困境,我应该将文件上传功能放在控制器或模型中。 经过几次试验和错误后,我决定将其置于模型之下,以便可重复使用,因为来自另一个控制器的调用控制器是针对MVC概念的。