web-dev-qa-db-ja.com

プログラムでメディアファイルを作成する

プログラムでメディアファイルを作成しようとしています。これが私がこれまでに得たものです:

$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行目)。

何が悪いのですか?このエラーを修正するにはどうすればよいですか?

1
ravi teja

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();
2
berramou