web-dev-qa-db-fra.com

Valeur par défaut d'un champ «fichier géré»

J'ai créé un formulaire personnalisé d'édition (d'un nœud) via un module personnalisé. A partir de ce formulaire, j'ai un champ "fichier géré" (pour une image) et je définis sa valeur par défaut sur fid; Cependant, lorsque mon formulaire est rendu, le champ "fichier géré" n'affiche pas l'image ratacée. Je ne comprends pas pourquoi

Mon 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
);

Ma forme rendue:

enter image description here

Comme vous le voyez, aucune image n'est chargée alors que la valeur par défaut est définie sur un fid existant (10)

5
matthieu lopez

Pour rendre l'image existante, veuillez utiliser le code ci-dessous

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

Vous devez donner le fid au format tableau. Veuillez l'essayer et faites-moi savoir si vous avez obtenu le résultat

10
baalu aanand

Dans mon cas, j'avais besoin d'ajouter des fichiers par défaut à un élément de champ de fichiers gérés multiples dans drupal 8. mon nom de fichier était "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