プログラムでメディアファイルを作成しようとしています。これが私がこれまでに得たものです:
$file_data = file_get_contents('http://www.africau.edu/images/default/sample.pdf');
$file = file_save_data($file_data, 'public://3010.pdf', FILE_EXISTS_REPLACE);
$media = Media::create([
'bundle' => 'file',
'uid' => '0',
'field_media_file' => [
'target_id' => $file->id(),
],
]);
$media->setName('Hello')
->setPublished(TRUE)
->save();
残念ながら、これにより次のエラーが返され、メディアファイルが保存されません。
エラー:Drupal\media\Entity\Media-> getSource()のnullでメンバー関数getSource()を呼び出します(core/modules/media/src/Entity/Media.phpの138行目)。
何が悪いのですか?このエラーを修正するにはどうすればよいですか?
uid
を0にすることはできません。'uid'=> \Drupal::currentUser()->id()
によって'uid' => '0'
を変更するだけです。
$file_data = file_get_contents('http://www.africau.edu/images/default/sample.pdf');
$file = file_save_data($file_data, 'public://3010.pdf', FILE_EXISTS_REPLACE);
$media = Media::create([
'bundle' => 'file',
'uid' => \Drupal::currentUser()->id(),
'field_media_file' => [
'target_id' => $file->id(),
],
]);
$media->setName('Hello')->setPublished(TRUE)->save();