#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|', ).....