2017-09-13 3 views
0

Codeigniter HMVC에서이 문제가 발생합니다.Codeigniter HMVC - 함수에서 라이브러리를로드 할 수 없습니다.

'업로드'또는 'image_lib'와 같은 라이브러리를로드하려면 클래스의 로컬 함수에로드하면 인스턴스가 항상 null입니다. 그러나 생성자에서 객체를 인스턴스화하면로드가 성공적으로 완료되고 라이브러리 클래스의 함수를 호출 할 수 있습니다. 누군가가이 문제를 도울 수 있다면

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

나는이 의지가 당신을 도움이되기를 바랍니다.