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
}
}
}
Будет здорово, если кто-то сможет помочь с этой проблемой.
1 ответ
Вы можете попробовать это решение для вашей проблемы.
Пожалуйста, измените ваш файл контроллера.
<?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
}
}
}
}
?>
Я надеюсь, что это поможет вам.