2017-09-13 19 views
0

Codeigniter HMVCでこの問題が発生しています。Codeigniter HMVC - 関数内でライブラリを読み込めません。

'upload'や '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 
      } 
     } 
    } 
} 
?> 

私は、この意志はあなたを助け願っています。

関連する問題