Как использовать Multiupload Imagefield в своем модуле Drupal 7 используя Form API?

Главные вкладки

Аватар пользователя Alexanderos Alexanderos 26 июля 2014 в 13:52

Пытаюсь заставить работать виджет Multiupload Imagefield в собственном модуле Drupal 7 используя Form API, но не получается Sad

Виджет по сути сам появляется и выбрать можно несколько файлов, а вот дальше появляется проблема. В частности, выбрав изображения, когда я нажимаю на кнопку "Закачать" (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(1024 1024),
    ),
  );

  

$form['submit'] = array(
    
'#type' => 'submit',
    
'#value' => 'Submit',
  );

  return 

$form;
}
?>

Использовал чистую установку друпала + 2 необходимых модуля:

На drupal.org не нашел ответа. Единственное что есть по делу - это то что нужно использовать тип поля "mfw_managed_file" (ссылка на issue), но никаких более подробностей я не обнаружил. Задал вопрос и там конечно.

Буду благодарен за любые советы.

P.S.: нужна именно мультизагрузка, поэтому типы поля "file" или "managed_file" не особо подходят.

Комментарии

Аватар пользователя Alexanderos Alexanderos 28 июля 2014 в 10:01

Проблема в том, что у этого plupload нет превью при загрузке изображений.
А также нельзя сортировать их. Это очень неудобно.
Если я чего-то не знаю на счет этого, поправьте меня пжл и подскажите как это сделать Smile

Аватар пользователя dashiwa dashiwa 28 июля 2014 в 11:45

«В родной форме создания/редактирования ноды виджет работает без проблем,»
А код родной формы смотрели?) То бишь самого модуля как он подключается.

Аватар пользователя Alexanderos Alexanderos 28 июля 2014 в 16:28

dashiwa wrote:
«В родной форме создания/редактирования ноды виджет работает без проблем,»
А код родной формы смотрели?) То бишь самого модуля как он подключается.

Перехватывал форму через hook_form_alter() и смотрел из чего она состоит - огромный массив, завязанный на полях сущности (естесственно). К сожалению в нем я не разобрался... попробовал упрощенно это дело скопировать, но не получилось.

Аватар пользователя Alexanderos Alexanderos 10 ноября 2015 в 11:49

Оказывается при нажатии кнопки "Upload" в журнале появляются вот такие уведомления (notices):

Notice: Undefined index: in file_ajax_upload() (line 262 of Z:\home\drupal7.loc\www\modules\file\file.module).
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).

Кто-нибудь встречал подобное? Что это может быть?







Аватар пользователя Alexanderos Alexanderos 31 июля 2014 в 14:29

Эту специфичную функцию как-то можно подвязать к кнопке "Upload"? Ведь проблемы начинаются еще до нажатия кнопки "Submit".