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 に答える