使用managed_file以自定义形式上载多个文件

时间:2017-03-01 17:08:30

标签: drupal-7 form-api

我在Drupal 7中构建了一个自定义设置表单,其中包含一个图片上传字段。此图片字段应允许多次上传。

经过一些研究后,我发现您可以使用managed_file'#attributes' => array('multiple' => 'multiple')执行此操作。然而,这似乎没有做任何事情。

这是我目前的代码:

$form['frontpage_banner_images'] = array(
  '#type' => 'managed_file',
  '#title' => t('Frontpage Images'),
  '#name' => 'files[]',
  '#attributes' => array(
    'multiple' => 'multiple',
    'class' => 'testclass',
  ),
  '#upload_location' => 'public://homepage-banners/',
  '#default_value' => variable_get('frontpage_banner_images'),
);

结果如下:

<div class="form-item form-type-managed-file form-item-files-">
  <label for="edit-frontpage-banner-images-upload">Frontpage Images</label>
  <div id="edit-frontpage-banner-images-upload" class="testclass form-managed-file">
    <input type="file" id="edit-frontpage-banner-images-upload" name="files[frontpage_banner_images]" size="22" class="form-file">
    <input type="submit" id="edit-frontpage-banner-images-upload-button" name="frontpage_banner_images_upload_button" value="Upload" class="form-submit ajax-processed">
    <input type="hidden" name="frontpage_banner_images[fid]" value="0">
  </div>
</div>

正如您所看到的,testclass中的#attributes正在应用于包裹div,而不是应用于文件输入。因此multiple属性不做任何事情。

这就是我想要实现的目标(Photoshop):

enter image description here

有关如何实现这一目标的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

多重选项似乎不是supported。然后你再次在#attributes下使用它。这会导致IMO的html元素有一个atttribute多个,但我没有在/modules/file/file.js中看到任何东西来接收它,所以这可能是为什么它是not doing anything。 根据建议here,你可能最好使用plupload。