Tahmid-ni7
Tahmid-ni7

Reputation: 410

Can't display file validation error message in codeigniter

I have set form validation in my project. My all form validation is working but I can not display file input validation error message. The file is upload properly, it doesn't show any error when I upload an invalid file. I try a lot of ways but anythings are not working.

I give here only file uploading related code.

My controller

    $config = [
        'upload_path'=>'./uploads/image/',
        'allowed_types'=>'jpg|png',
        'max_size' => '400',
        'overwrite' => FALSE
        ];

    $this->load->library('upload', $config);

    if(!($this->form_validation->run() && $this->upload->do_upload()))
    {
        $view = array('error' => $this->upload->display_errors());

        $view['admin_view'] = "admin/add_books";
        $this->load->view('layouts/admin_layout', $view);

    }

MY model

public function add_books()
{
    $data = $this->upload->data();
    $image_path = base_url("uploads/image/".$data['raw_name'].$data['file_ext']);

    $data = array(
        'book_name' => $this->input->post('book_name'),
        'description' => $this->input->post('description'),
        'author' => $this->input->post('author'),
        'publisher' => $this->input->post('publisher'),
        'price' => $this->input->post('price'),
        'quantity' => $this->input->post('quantity'),
        'categoryId' => $this->input->post('categoryId'),
        'book_image' => $image_path,
        'userId' => $this->session->userdata('id'),
        'status' => $this->input->post('status')
    );

    $insert_book = $this->db->insert('books', $data);
    return $insert_book;
}

My view

    <div class="form-group row">
        <label for="book_image" class="col-sm-2 col-form-label">Book image</label>
        <div class="col-sm-6">
            <?= form_upload(['name'=>'userfile', 'class'=>'form-control'])?>
            <div class="text-secondary">* Upload PNG, JPG format. Image should not be more than 400KB</div>
        </div>
        <div class="col-sm-4">
           <div class="text-danger form-error"><?= form_error('userfile')?></div>    
        </div>
    </div>

How it can be fixed?

Upvotes: 1

Views: 297

Answers (1)

Danish Ali
Danish Ali

Reputation: 2352

I think you should separate $this->form_validation->run() and $this->upload->do_upload()

$view = array();
if($this->form_validation->run() == true){

    if(!$this->upload->do_upload('userfile')){
        $view['error'] = $this->upload->display_errors();
    }
 }else{
     $view['error'] = validation_errors();
 }

 if(array_key_exists('error', $view)){
      $view['admin_view'] = "admin/add_books";
      $this->load->view('layouts/admin_layout', $view);
 }else{
     //Insert the record
 }

Upvotes: 1

Related Questions