использование класса загрузки в codeigniter - модель или контроллер? - PullRequest
2 голосов
/ 16 июля 2010

Быстрый вопрос о 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'));

Ответы [ 3 ]

5 голосов
/ 16 июля 2010

Я бы добавил это в модель, потому что мне нравится держать свои контроллеры как можно более тонкими. Я думаю о контроллере как о связи между представлениями и обработкой в ​​подсобном помещении, а не самой обработкой. Я не уверен, является ли это «лучшей практикой» или нет. Это, безусловно, будет работать так же, как и вы. CodeIgniter позволяет вам быть достаточно гибким в применении теории mvc.

0 голосов
/ 10 мая 2013

Используйте ваши модели для взаимодействия с данными, будь то взаимодействие с базой данных, вызов API или загрузка и выгрузка файлов.Используйте свой контроллер, чтобы запустить шоу и сделать вызовы с этими данными.Делайте все возможное, чтобы хранить их все отдельно в случае, если метод взаимодействия с этими данными когда-либо изменится.Большую часть времени мы думаем о модели как о функции базы данных, но на самом деле это должны быть ЛЮБЫЕ данные независимо от того, как они извлекаются.

0 голосов
/ 20 сентября 2012

Я столкнулся с той же дилеммой, должен ли я добавить функцию загрузки файла в контроллер или модель.После нескольких проб и ошибок я решил использовать модель для многократного использования, поскольку вызов контроллера из другого контроллера противоречит концепции MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...