it-swarm.com.de

Standardwert eines Felds "Verwaltete Datei"

Ich habe ein benutzerdefiniertes Bearbeitungsformular (eines Knotens) über ein benutzerdefiniertes Modul erstellt. In diesem Formular habe ich ein Feld "Verwaltete Datei" (für ein Bild) und seinen Standardwert auf fid gesetzt. Wenn mein Formular gerendert wird, wird im Bild "Verwaltete Datei" das Bild nicht angezeigt. Ich verstehe nicht warum

Mein Code:

$form['project']['image'] = array(
  '#type' => 'managed_file',
  '#title' => t('Image'),
  '#default_value' => 10, //Set 10 for the test, the fid "10" exist, I checked
);

Mein Formular wurde gerendert:

(enter image description here

Wie Sie sehen, wird kein Bild geladen, während der Standardwert auf eine vorhandene FID gesetzt ist (10).

5
matthieu lopez

Verwenden Sie zum Rendern des vorhandenen Bildes den folgenden Code

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

Sie müssen die FID im Array-Format angeben. Bitte versuchen Sie es und lassen Sie mich wissen, ob Sie das Ergebnis erhalten haben

10
baalu aanand

In meinem Fall musste ich Standarddateien zu einem Feldelement mit mehreren verwalteten Dateien in drupal 8. Mein Dateiname war "field_dpe_submission_file" hinzufügen.

  $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