Пытаюсь заставить работать виджет Multiupload Imagefield в собственном модуле Drupal 7 используя Form API, но не получается
Виджет по сути сам появляется и выбрать можно несколько файлов, а вот дальше появляется проблема. В частности, выбрав изображения, когда я нажимаю на кнопку "Закачать" (Upload) на мгновение появляется значок загрузки (прелоадер) и исчезает, а изображения тем не менее никуда не закачиваются и форма, по видимому, просто перезагружается (обнуляя выбранные файлы).
В родной форме создания/редактирования ноды виджет работает без проблем, но что не так в моем модуле, кто-нибудь может подсказать?
Привожу код функции формы своего модуля:
<?php
function test_module_form($form, &$form_state) {
$form = array();
$form['image'] = array(
'#title' => 'Upload image',
'#type' => 'mfw_managed_file',
'#upload_location' => 'public://images/',
'#upload_validators' => array(
'file_validate_is_image' => array(),
'file_validate_extensions' => array('png gif jpg jpeg'),
'file_validate_size' => array(2 * 1024 * 1024),
),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return
$form;
}
?>
Использовал чистую установку друпала + 2 необходимых модуля:
На drupal.org не нашел ответа. Единственное что есть по делу - это то что нужно использовать тип поля "mfw_managed_file" (ссылка на issue), но никаких более подробностей я не обнаружил. Задал вопрос и там конечно.
Буду благодарен за любые советы.
P.S.: нужна именно мультизагрузка, поэтому типы поля "file" или "managed_file" не особо подходят.
Комментарии
Для начала можно проверить журнал ошибок и консоль браузера.
Нет ошибок в консоли.
plupload не пробывали? (http://drupal.stackexchange.com/questions/60892/how-do-i-set-the-custom-...)
Проблема в том, что у этого plupload нет превью при загрузке изображений.
А также нельзя сортировать их. Это очень неудобно.
Если я чего-то не знаю на счет этого, поправьте меня пжл и подскажите как это сделать
«В родной форме создания/редактирования ноды виджет работает без проблем,»
А код родной формы смотрели?) То бишь самого модуля как он подключается.
Перехватывал форму через hook_form_alter() и смотрел из чего она состоит - огромный массив, завязанный на полях сущности (естесственно). К сожалению в нем я не разобрался... попробовал упрощенно это дело скопировать, но не получилось.
Оказывается при нажатии кнопки "Upload" в журнале появляются вот такие уведомления (notices):
Notice: Undefined index: fid in file_field_widget_submit() (line 773 of Z:\home\drupal7.loc\www\modules\file\file.field.inc).
Notice: Undefined index: field in field_widget_field() (line 578 of Z:\home\drupal7.loc\www\modules\field\field.form.inc).
Notice: Undefined index: instance in field_widget_instance() (line 603 of Z:\home\drupal7.loc\www\modules\field\field.form.inc).
Notice: Undefined index: instance in field_widget_instance() (line 603 of Z:\home\drupal7.loc\www\modules\field\field.form.inc).
Notice: Undefined index: in file_ajax_upload() (line 271 of Z:\home\drupal7.loc\www\modules\file\file.module).
Notice: Undefined index: #suffix in file_ajax_upload() (line 280 of Z:\home\drupal7.loc\www\modules\file\file.module).
Кто-нибудь встречал подобное? Что это может быть?
Очевидно вам нужна специфичная submit-функция
Эту специфичную функцию как-то можно подвязать к кнопке "Upload"? Ведь проблемы начинаются еще до нажатия кнопки "Submit".
Ну так upload тоже сабмит.
Надо смотреть код модуля, там видать сохранения файла идёт, а у вас его нет.