【问题标题】:use of upload class in codeigniter - Model or Controller?在codeigniter中使用上传类-模型还是控制器?
【发布时间】:2011-03-16 20:40:13
【问题描述】:

关于 CI 的快速问题。

我有一个视图,其中包含一个表单、几个文本输入字段和一个文件上传。 我希望能够从文本字段中获取输入,将其保存到数据库,然后上传图像。

我通过将上传代码放在控制器中实现了这一点,如果上传成功,则会调用我的Model来更新数据库。

这是“最佳实践”,还是确实可以接受的方式?或者文件上传应该放在模型中。有关系吗?

基本上我的代码是:

    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'));

【问题讨论】:

    标签: file class codeigniter upload


    【解决方案1】:

    我会将其放入模型中,因为我希望我的控制器尽可能纤薄。我认为控制器是视图和后台处理之间的链接,而不是处理本身。 我不确定这是否是“最佳实践”。它肯定会按照您的方式工作。 CodeIgniter 让您可以非常灵活地应用 mvc 理论。

    【讨论】:

    • 我想问一个问题。如何将上传错误或模型中的上传数据返回到控制器,以便将它们显示到视图中?有没有不使用 flashdata 的另一种方法?
    【解决方案2】:

    使用您的模型与数据进行交互,无论是数据库交互、api 调用还是文件上传和下载。使用您的控制器运行节目并调用该数据。尽量将它们分开,以防与数据交互的方法发生变化。大多数时候我们认为模型是一个数据库函数,但它真的应该是任何数据,不管它是如何检索的。

    【讨论】:

      【解决方案3】:

      我遇到了同样的困境,我应该将文件上传功能放在控制器还是模型中。 经过几次试验和错误后,我决定将其置于模型下以实现可重用目的,因为从另一个控制器调用控制器违反了 MVC 概念。

      【讨论】:

        猜你喜欢
        • 2011-07-19
        • 1970-01-01
        • 2017-11-02
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-12
        • 2016-01-25
        相关资源
        最近更新 更多