J'ai créé le type de contenu "Galerie" et ajouté deux champs: "photo" et "document". J'ai ensuite utilisé le code suivant pour télécharger un fichier dans le champ "document":
$file = file_save_upload('document', array(
'file_validate_extensions' => array('txt doc'), // Validate extensions.
));
// If the file passed validation:
if ($file) {
// Move the file, into the Drupal file system
if ($file = file_move($file, 'public://')) {
$file->status = FILE_STATUS_PERMANENT;
// $file->file_display = 1;
$file = file_save($file);
} else {
$output = t('Failed to write the uploaded file the site\'s file folder.');
}
} else {
$output = t('No file was uploaded.');
}
J'attache ce fichier au nœud en utilisant le code suivant:
$customNode->field_document[$customNode->language][0] = (array)$file;
Lorsque j'appelle la node_submit()
fonction, j'obtiens l'erreur suivante:
Violation de contrainte d'intégrité: 1048 La colonne 'field_document_display' ne peut pas être nulle
Quelqu'un sait-il ce que je fais mal?
Votre solution est presque la bonne; cependant, dans certains cas, cela nécessite que vous définissiez également l'affichage et la description.
Pour faire fonctionner votre code, procédez comme suit:
la source
Je pense que la clé ici sont ces lignes
comme l'a souligné Eric van Eldik. Je me débattais avec exactement le même problème, ajoutant juste
n'a pas aidé, mais
fait ma journée.
la source
Pour ajouter un fichier par programme au nœud, vous pouvez utiliser
la source
Juste pour coller ma solution ici aussi, je devais créer un nouveau nœud et télécharger une image par programme.
la source
Attachez plusieurs fichiers par programme dans Drupal 8:
la source