1

我能够使用managed_file. 该文件保存在正确的目录中,并且记录显示在file_managed表中。

$form['image'] = array(
    '#title' => t('Image'),
    '#type' => 'managed_file',
    '#default_value' => (isset($foo->image->fid) ? $foo->image->fid : ''),
    '#upload_location' => 'public://foo_images/'
);

但是当我编辑表单时,它仍然显示Upload按钮,类似于我上传文件之前的创建页面。如何使编辑页面看起来像我已经为该特定实体上传了文件?

4

1 回答 1

0

检查$foo变量表明我应该只使用$foo->image而不是$foo->image->fid.

可能是因为我的 中有以下几行_form_submit

if (isset($form_state['values']['image'])) {
    $file = file_load($form_state['values']['image']); 
    $file->status = FILE_STATUS_PERMANENT;
    file_save($file);
    file_usage_add($file, 'foo', 'foo', $foo->tkid);

    $foo->image = $file->fid;
  }

注意说的部分$foo->image = $file->fid;

于 2013-11-06T04:12:10.010 回答