Drupal 7, default_value для поля файла в пользовательской форме

Я создал формулу, в которой пользователь может загрузить изображение, используя поле файла. В другой формуле пользователь может изменить изображение, которое он ранее загрузил.

До сих пор мне удавалось, чтобы пользователь мог загрузить новое изображение или оставить поле пустым, а существующее изображение осталось. Мой вопрос: как мне красиво показать пользователю, какой файл он ранее загрузил с полем? Установка #default_value (@code ниже) мне ничего не дает.

//$smallimage = fid of image
$form['smallimage'] = array(
  '#type' => 'file',
  '#title' => t('Image'),
  '#default_value' => $smallimage,
  '#description' => t('Upload a file, allowed extensions: jpg, jpeg, png, gif'),
);

Изменить: переключился обратно на управляемые файлы. У меня нет типов для привязки моих файлов/изображений, поэтому я привязываю их к первому узлу и первому пользователю. Не чистое решение, но оно работает.

Есть ли у кого-нибудь решение/обходной путь без переключения на manage_file?

заранее спасибо


person Felix    schedule 28.10.2013    source источник


Ответы (1)


В Drupal FAPI «#default_value» не является допустимым свойством для типа «файл», если вы хотите использовать свойство #default_value, в этом случае вы можете использовать

'#type'         => 'managed_file'

и ваш код должен выглядеть так,

$form['file'] = array( 
    '#title'        => t('Upload image'),
    '#type'         => 'managed_file',
    '#description'  => t('Images must be one of jpg, bmp, gif or png formats.'),
    '#default_value' => $fid,  //here you need to provide the file id (get it from database or $file_obj->fid).
    '#upload_location' => 'public://'
);
person shrish    schedule 07.05.2014