J'essaie de mettre à jour un champ d'image de nœud par programme. Je charge actuellement le nœud comme ceci:
$node = Node::Load(1);
avoir l'URI si l'image que je veux définir. J'ai essayé mais pas de chance:
$node->set('field_image_head', array('#uri' => $imageUri));
{{ file_url(node.field_image_head.entity.fileuri}}
Vous devez d'abord créer un fichier pour l'image avant de pouvoir l'ajouter au nœud.
use Drupal\node\Entity\Node;
use Drupal\file\Entity\File;
$node = Node::load(1);
$uri = 'public://image.jpg';
// check first if the file exists for the uri
$files = \Drupal::entityTypeManager()
->getStorage('file')
->loadByProperties(['uri' => $uri]);
$file = reset($files);
// if not create a file
if (!$file) {
$file = File::create([
'uri' => $uri,
]);
$file->save();
}
$node->field_image[] = [
'target_id' => $file->id(),
'alt' => 'Alt text',
'title' => 'Title',
];
$node->save();