Класс загрузки файла CodeIgniter — инициализировать другой файл конфигурации

#php #codeigniter

#php #codeigniter

Вопрос:

Итак, я немного погуглил это, похоже, не могу найти ответ.

Насколько я понимаю, этот код: $this->upload->initialize() инициализирует класс загрузки файла CI с помощью upload.php файла конфигурации. Что я хочу сделать, так это использовать другой файл.

Я пытался $this->upload->initialize('upload_other') , но, похоже, это не сработало. Я знаю, что вы можете просто установить $config массив в контроллере, но я пытаюсь избежать этого.

Возможно ли это? Я неправильно подхожу к этому?

Ответ №1:

Вы не можете инициализировать / переопределить подобные конфигурации.

Вы можете инициализировать с помощью

 $this->config->load('upload');
-- Some code Here -- 

$this->config->load('upload_other');
-- Some code Here -- 
  

ИЛИ вы можете сделать это по массиву следующим образом.

 $config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

$this->load->library('upload', $config);

// Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:
$this->upload->initialize($config);
  

Если вы хотите одновременно загружать другие файлы, вы можете изменить свой конфигурационный массив.

 $config2['upload_path'] = './uploads/small/';
$config2['allowed_types'] = 'gif|jpg|png';
$config2['max_size'] = '100';
$config2['max_width'] = '100';
$config2['max_height'] = '100';

$this->load->library('upload', $config2);

// Alternately you can set
$this->upload->initialize($config2);
  

Обновить

вы можете указать свои общие данные в файле конфигурации. скажите

 config['width'] = '100';

config['width2'] = '100';
  

Теперь используйте в вашем контроллере, как

 config['width'] = $this->config->item('width');

config2['width'] = $this->config->item('width2');
  

таким образом, вы можете повторно использовать те же настройки.

Комментарии:

1. значит, это вообще невозможно? это отстой, когда приходится помещать конфигурационный массив на сам контроллер. Что, если бы я захотел использовать те же конфигурации в другой форме? Должен ли я снова объявлять этот конфигурационный массив?

2. кажется, на самом деле нет реального ответа на мой вопрос. Я ценю помощь, ребята. Помечаем это как ответ, пока кто-нибудь не придумает ответ получше.

Ответ №2:

Почему вы пытаетесь избежать использования конфигурационного массива? Другой способ — создать файл upload.php-config. Если вы хотите использовать разные конфигурации на разных контроллерах, вы всегда можете создать и загрузить полный пользовательский конфигурационный файл: Codeigniter userguide Здесь вы можете создать несколько переменных с разными массивами upload-config.

Вы можете загрузить этот конфигурационный файл в каждый контроллер и использовать эти конфигурации с помощью метода initialize.

Комментарии:

1. Я пробовал это. Это не работает. $this->load->config($config) возвращает логическое значение, которое я не могу использовать в $this->upload->initialize() . единственный способ, которым это работает, — загрузить конфигурационный файл и извлекать каждый элемент один за другим, что в основном совпадает с объявлением $config массива в контроллере.

2. Вы можете просто сохранить массив в значении конфигурации: $config['upload_settings_1'] = array('upload_path' => './uploads/', 'allowed_types' => 'jpeg|', ).....