2017-09-13 7 views
0

J'ai ce problème avec Codeigniter HMVC. Lorsque je veux charger une bibliothèque comme 'upload' ou 'image_lib', l'instance est toujours nulle si je la charge dans une fonction locale dans une classe. Cependant, lorsque j'instancie un objet dans un constructeur, la charge est réussie et je peux appeler des fonctions pour la classe de bibliothèque.Codeigniter HMVC - Impossible de charger une bibliothèque dans une fonction

Voici le code:

<?php 
class Listed_items extends MX_Controller { 

function __construct() { 
parent::__construct(); 
$this->load->library('form_validation'); 
$this->load->library('upload'); // this works 
$this->load->library('image_lib'); // this works 
$this->form_validation->set_ci($this); 
} 

function do_upload($item_url) { 
$submit = $this->input->post('submit', true); 
if ($submit == "cancel") { 
    redirect('listed_items/create_item/'.$item_url); 
} else if ($submit == "upload") { 
    $config['upload_path'] = './big_pics/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = 300; 
    $config['max_width'] = 3036; 
    $config['max_height'] = 1902; 
    $file_name = $this->site_security->generate_random_string(16); 
    $config['file_name'] = $file_name; 

    $this->load->library('upload', $config); // this calls on null 
    } 
} 
} 

Ce sera génial si quelqu'un peut aider à ce problème.

Répondre

0

Vous pouvez essayer cette solution pour votre problème.

Veuillez changer le fichier de votre contrôleur.

<?php 
class Listed_items extends MX_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->library('form_validation'); 
     $this->form_validation->set_ci($this); 
    } 
    function do_upload($item_url) { 
     $submit = $this->input->post('submit', true); 
     if ($submit == "cancel") { 
      redirect('listed_items/create_item/' . $item_url); 
     } else if ($submit == "upload") { 
      $config['upload_path'] = './big_pics/'; 
      $config['allowed_types'] = config_item('allowed_files'); 
      $config['max_size'] = '20240000245'; 
      $config['overwrite'] = TRUE; 
      $config['encrypt_name'] = TRUE; 
      $config['max_width'] = '1024'; 
      $config['max_height'] = '768'; 
      $imgage_width=!empty($width) ? $width :60; 
      $imgage_height=!empty($height) ? $height :60; 
      $this->load->library('upload', $config); 
      $this->upload->initialize($config); 
      if (!$this->upload->do_upload($field)) { 
       $error = $this->upload->display_errors(); 
       $type = "error"; 
       $message = $error; 
       set_message($type, $message); 
       return FALSE; 
       // uploading failed. $error will holds the errors. 
      } else { 
       $fdata = $this->upload->data(); 
       $configer = array(
        'image_library' => 'gd2', 
        'source_image' => $fdata['full_path'], 
        'maintain_ratio' => TRUE, 
        'width'   => $imgage_width, 
        'height'   => $imgage_height, 
       ); 
       $this->load->library('image_lib'); 
       $this->image_lib->clear(); 
       $this->image_lib->initialize($configer); 
       $this->image_lib->resize(); 
       $img_data ['path'] = $config['upload_path'] . $fdata['file_name']; 
       return $img_data; 
       // uploading successfull, now do your further actions 
      } 
     } 
    } 
} 
?> 

J'espère que cela vous aide.