我可以使用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
按钮,类似于我上传文件之前的“创建”页面。如何使编辑页面看起来像我已经为该特定实体上传了文件?
答案 0 :(得分: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;