Загрузка изображения все еще отправляется с проверкой обратного вызова в CI - PullRequest
0 голосов
/ 16 февраля 2019

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

Прямо сейчасвыдает ошибку, но показывает запрос к базе данных вместе с «Изображение в sql не может быть пустым».Мне бы хотелось, чтобы он показывался так же, как обычная проверка формы без показа запроса и ошибки sql.

По-прежнему кажется, что форма отправляется без предварительной ошибки, потому что она говорит: $ post_image undefined.

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

Контроллер:

public function create(){

  //Check in login session
  if(!$this->session->userdata('logged_in')){

    $this->session->set_flashdata('log_post','Please login or create a free account to post a ad.');

    redirect('users/register');


  }

  $data['title'] = 'Create a Post';

  $data['categories'] = $this->post_model->get_categories();

  $data['states'] = $this->post_model->get_city();

  $this->form_validation->set_error_delimiters('<div class="error"> <h7> Error: </h7>', '</div>');

  $this->form_validation->set_rules('title','Title',array('required', 'min_length[3]'));
  //$this->form_validation->set_rules('file','Image Upload','required');
  $this->form_validation->set_rules('Description','About You',array('required', 'min_length[5]'));

  $this->form_validation->set_rules('Number','Phone Number',array('required', 'min_length[7]'));

  $this->form_validation->set_rules('Area','Location/Area',array('required', 'min_length[2]'));



if($this->form_validation->run() === FALSE){

  $this->load->view('templates/header');
  $this->load->view('posts/create', $data);
  $this->load->view('templates/footer');

} else {

//  $this->load->helper('file');
   //$this->form_validation->set_rules('file','','callback_file_check');

   if($this->form_validation->run()==TRUE){


  $config['upload_path'] = 'assets/images/posts';
  $config['allowed_types']        = 'jpg|jpeg|png';
  $config['encrypt_name']         = TRUE; //TURN ON
  $config['max_size']             = 0;
  $config['max_width']            = 0;
  $config['max_height']           = 0;



  $this->upload->initialize($config);



  if(!$this->upload->do_upload('file')){
    $errors = array('error'=>$this->upload->display_errors());
    $this->load->view('templates/header');
    $this->load->view('posts/create', $errors);
    $this->load->view('templates/footer');

  }else {
    $data = $this->upload->data();
    $post_image = $data['file_name'];
  }

}



$this->post_model->create_post($post_image);

$this->session->set_flashdata('post_created','Your Post has been submitted');

redirect('posts');

}

}

}// end of class

Модель:

public function create_post($post_image){

$slug = md5(uniqid().mt_rand());

//url_title($this->input->post('title'), 'dash', TRUE). // this is the orginal way for slug SEO friendly

$site = $this->input->post('site');

//adds HTTP too website links

    if (!preg_match("~^(?:f|ht)tps?://~i", $site)) {
        $site = "http://" . $site;
    }



$data = array(

'title'=>$this->input->post('title'),
'body'=> $this->input->post('Description'),
'post_image' => $post_image

);

return $this->db->insert('posts',$data);

}

Вид:

<div class="form-group row">
                <label class="col-sm-3 col-form-label" for="textarea">Photo</label>
                     <div class="col-lg-8">
                          <div class="mb10">

      <?php echo form_error('file') ?>

   <input name="file" type="file" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp">
                                            </div>


  <?php if (isset($error)) { echo $error; } ?>
                                    </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...