Загрузка файлов в динамически сформированном шаблоне настроек (бэкэнд)
Здравствуйте, уважаемые форумчане!
Пишу плагин для элемента страницы на фронтэнде с категориями (со ссылкой) и их картинками. Каждый элемент списка добавляется динамечески (брал с плагина 301 Redirect). Для отображения опции для каждой категории используется " Динамическое формирование списка значений".
И вот какая проблема, поля типа waHtmlControl::INPUT и waHtmlControl::CHECKBOX оно сохраняет, но вот FILE - ни в какую не может. При том, не могу его никак отловить. Он не передаётся ни в $settings, ни в waRequest::file().
Грузится всё через iFrame, эта строка в шаблоне также присутствует: $.plugins.options.useIframeTransport = true;
При том, если я просто добавляю waHtmlControl::FILE в settings.php и туда передаю картинку - всё передаётся (в переменной $settings).
Подскажите, как заставить эту штуку работать. Излазил уже все форумы и документации и в движке посмотрел (хоть и не особо что понял) .
Всем заранее спасибо!
10 ответов
Он и не должен передаваться, вы должны самостоятельно отлавливать файлы через клиент, а не сервер. Пользователь выбрал файл - сразу грузите его, проверяя форматы и размеры, сохраняете в скрытом поле ссылку, а по нажатию "Сохранить" уже готовую ссылку куда-то в базу пихаете.
вообще-то должен, можно обойтись без таких усложнений тем более проверка данных должна быть комплексной.
посмотрите тег формы у нее задан атрибут enctype? и судя по тому что грузите Вы сразу много файлов поле должно называться как-то так "settings[files][]".
Да, "enctype="multipart/form-data". Вывел через print_r() в лог переменную "$setting", но в ней только чекбокс и инпут с формы. Ключа settings[files][]" не имеется.
в общем пиши свой код никому в угадайку играть не хочется
Спасибо за ответ!
name'ы у инпутов в админке: shop_promo[custom][0][image], shop_promo[custom][1][image] и так далее. Вот реализация самого блока (брал из плагина 301 Redirect):
У waHtmlControl::FILE есть еще параметр $params['img_path'].
Переопредели метод `waPlugin::saveSettings($settings = array())`, $settings уже содержат объекты waRequestFile т.ч. остается только сохранить их и обновить значение $settings.
Да, saveSettings($settings = array()) переопределён, я вывел $settings в лог, но там нет полей от FILE, а только от CHECKBOX:
Не совсем понял, мне нужно самому где-то добавить параметр "img_path" или он должен где-то присутствовать (я в лог выводил всё, что можно, но такого параметра нигде не встречал).
вот рабочий пример из метода saveSettings:
где-то делал симпатичнее, но не могу вспомнить в каком плагине :)
Дело в том, что у меня ничего не пападает в $settings['image']. Если я добавляю форму для файла через settings.php, то всё работает как и у вас, но я добавляю форму в динамический шаблон и там name у инпута shop_promo[custom][0][image]. Он в $settings и в waRequestFile не передаётся.