プログラムでノード画像フィールドを更新しようとしています。私は現在このようにノードをロードしています:
$node = Node::Load(1);
設定したい画像であればURIを持っています。私はこれを試しましたが運はありません:
$node->set('field_image_head', array('#uri' => $imageUri));
{{ file_url(node.field_image_head.entity.fileuri}}
ノードに追加する前に、まずイメージのファイルを作成する必要があります。
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();