2017-09-13 47 views
0

我遇到了Codeigniter HMVC的这个问题。Codeigniter HMVC - 无法在函数中加载函数库

当我想加载一个库,例如'upload'或 'image_lib'时,如果我将它加载到类的本地函数中,该实例始终为空。但是,当我在构造函数中实例化对象时,加载成功,我可以调用库类的函数。

下面的代码:

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

这将是真棒,如果有人可以帮助解决这个问题。

回答

0

您可以尝试解决您的问题。

请更改您的控制器文件。

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

我希望这将帮助你。