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:
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)
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
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;
}
?>