カスタムモジュールを介して(ノードの)編集カスタムフォームを作成しました。このフォームから、「1つの画像用の」「管理ファイル」フィールドがあり、彼のデフォルト値をfidに設定しました。ただし、フォームがレンダリングされると、「管理対象ファイル」フィールドに画像が表示されません。理由がわかりません
私のコード:
$form['project']['image'] = array(
'#type' => 'managed_file',
'#title' => t('Image'),
'#default_value' => 10, //Set 10 for the test, the fid "10" exist, I checked
);
レンダリングされた私のフォーム:
ご覧のとおり、default_valueが既存のfid(10)に設定されているのに対して、画像は読み込まれていません。
既存の画像をレンダリングするには、以下のコードを使用してください
$form['project']['image'] = array(
'#type' => 'managed_file',
'#title' => t('Image'),
'#default_value' => array(10),
);
Fidを配列形式で指定する必要があります。試してみて、結果が出たかどうか教えてください
私の場合、drupal 8の複数の管理対象ファイルフィールド要素にデフォルトファイルを追加する必要がありました。私のファイル名は "field_dpe_submission_file"でした
$fids = [
10,
11,
12,
];
function setDefaultsForFileField(array &$form, $fids) {
$widget_clone = $form['field_dpe_submission_file']['widget'][0];
$form['field_dpe_submission_file']['widget']['#file_upload_delta'] = count($fids);
$form['field_dpe_submission_file']['widget']['#value'] = null;
$form['field_dpe_submission_file']['widget']['#defaults_loaded'] = TRUE;
foreach ($fids as $key => $value) {
$value = (int) $value;
$form['field_dpe_submission_file']['widget'][$key] = $widget_clone;
$file_array = [
'fids' => [
$value,
],
'display' => '1',
'description' => '',
'upload' => ''
];
$form['field_dpe_submission_file']['widget'][$key]['#value'] = $file_array;
$form['field_dpe_submission_file']['widget'][$key]['#default_value'] = $file_array;
$form['field_dpe_submission_file']['widget'][$key]['#input'] = TRUE;
$form['field_dpe_submission_file']['widget'][$key]['#delta'] = $key;
$name = 'field_dpe_submission_file[' . $key . ']';
$form['field_dpe_submission_file']['widget'][$key]['#name'] = $name;
$form['field_dpe_submission_file']['widget'][$key]['#theme'] = 'file_managed_file';
$form['field_dpe_submission_file']['widget'][$key]['#multiple'] = FALSE;
$form['field_dpe_submission_file']['widget'][$key]['fids'] = [
'#type' => 'hidden',
'#value' => [
$value,
],
'#theme' => 'input__hidden'
];
}
// Add the default widget back in.
$count = count($fids);
$form['field_dpe_submission_file']['widget'][$count] = $widget_clone;
}
?>