CodeIgniter - Как показать сообщение об ошибке от do_upload в модели - PullRequest
0 голосов
/ 14 февраля 2020

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

Вот мой код модели:

public function save()
    {
        $post = $this->input->post();
        $this->nip = $post["nip"];
        $this->id_jenis_berkas = $post["id_jenis_berkas"];
        $this->id_jenis_pengajuan = $post["id_jenis_pengajuan"];
        $this->file_berkas = $this->_uploadfile();
        $this->tanggal_upload = time($post["tanggal_upload"]);
        $this->db->insert($this->_table, $this);
    }

private function _uploadfile()
    {
        $this->load->helper('inflector');
        $file_name = underscore($_FILES['file_var_name']['name']);
        $config['upload_path']          = './upload/berkas/';
        $config['allowed_types']        = 'pdf';
        $config['file_name']            = $file_name;
        $config['overwrite']            = true;
        $config['max_size']             = 5120; // 1MB
        // $config['max_width']            = 1024;
        // $config['max_height']           = 768;`
        $this->load->library('upload', $config);

        if (!$this->upload->do_upload('file_berkas')) {
            $error = array('error' => $this->upload->display_errors()); 
        } else {
            return $this->upload->data("file_name");
        }
    } 

В контроллере:

public function addberkas()
    {
        $data['title'] = 'Data Berkas';
        $data['user'] = $this->db->get_where('tbl_user', ['nip' => $this->session->userdata('nip')])->row_array();
        $data['jberkas'] = $this->db->get('tbl_jenis_berkas')->result_array();
        $data['jpengajuan'] = $this->db->get('tbl_jenis_pengajuan')->result_array(); `

        $berkas = $this->berkas_model;
        $validation = $this->form_validation;
        $validation->set_rules($berkas->rules());

        if ($validation->run()) {
            $berkas->save();
            $this->session->set_flashdata('success', 'Berhasil disimpan');
            redirect('data/berkas');
        } else {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar', $data);
            $this->load->view('templates/topbar', $data);
            $this->load->view("data/t_berkas", $data);
            $this->load->view('templates/footer');
        }
    }

1 Ответ

0 голосов
/ 14 февраля 2020

Где вы хотите отобразить сообщение об ошибке? на основании вашего контроллера сообщение об ошибке не передается в поле зрения. вы просто пишете в переменную "$ error". Вы можете изменить эту переменную следующим образом:

$data['error'] = array('error' => $this->upload->display_errors());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...