web-dev-qa-db-ja.com

「管理ファイル」フィールドのデフォルト値

カスタムモジュールを介して(ノードの)編集カスタムフォームを作成しました。このフォームから、「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
);

レンダリングされた私のフォーム:

enter image description here

ご覧のとおり、default_valueが既存のfid(10)に設定されているのに対して、画像は読み込まれていません。

5
matthieu lopez

既存の画像をレンダリングするには、以下のコードを使用してください

$form['project']['image'] = array(
  '#type' => 'managed_file',
  '#title' => t('Image'),
  '#default_value' => array(10),
);

Fidを配列形式で指定する必要があります。試してみて、結果が出たかどうか教えてください

10
baalu aanand

私の場合、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;
  }
?>
1
Taggart Jensen