Не удается отобразить сообщение об ошибке проверки файла в codeigniter - PullRequest
1 голос
/ 21 апреля 2019

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

Я даю здесь только код загрузки файла, связанный с *. 1004 *

Мой контроллер

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

    }

МОЯ модель

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;
}

Мой взгляд

    <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>

Как это можно исправить?

1 Ответ

1 голос
/ 06 мая 2019

Я думаю, вы должны отделить $this->form_validation->run() и $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
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...