J'ai un type d'entité de contenu et j'aimerais avoir un champ "Télécharger un fichier". J'ai déclaré le champ dans ma classe d'entité
$fields['file'] = BaseFieldDefinition::create('file')
->setLabel(t('Upload a file'))
->setDescription(t('Choose file from your computer'));
Et dans EntityForm, j'essaie de définir certains paramètres, car je dois le rendre fiable plus tard avec les '#states'
$form['file'] = [
'#title' => $this->t('File'),
'#description' => $this->t('Upload a file from your computer'),
'#type' => 'file',
'#default_value' => $entity->file->value,
];
Mais pour le moment, le champ est affiché, mais j'ai des problèmes pour enregistrer le formulaire. Le fichier est joint, mais n'est pas téléchargé et l'erreur indique:
Erreur fatale: appel à une fonction membre getValue () sur un non-objet dans C:\A plus\drupalsite\core\modules\file\src\Plugin\Validation\Constraint\FileValidationConstraintValidator.php à la ligne 18
$form['File'] = array(
'#type' => 'managed_file',
'#title' => t('Choose File'),
'#upload_location' => 'public://MyFilesFolder/',
'#default_value' => $entity->get('File')->value,
'#description' => t('upload file'),
'#states' => array(
'visible' => array(
':input[name="File_type"]' => array('value' => t('Upload Your File')),
),
),
);