it-swarm.com.de

Erstellen Sie programmgesteuert eine Mediendatei

Ich versuche, programmgesteuert eine Mediendatei zu erstellen. Folgendes habe ich bisher erreicht:

$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();

Leider gibt mir dies den folgenden Fehler zurück und die Mediendatei wird nicht gespeichert:

Fehler: Rufen Sie eine Mitgliedsfunktion getSource () auf null in Drupal\media\Entity\Media-> getSource () auf (Zeile 138 von core/modules/media/src/Entity/Media.php).

Was mache ich falsch? Wie kann ich diesen Fehler beheben?

1
ravi teja

uid sollte nicht 0 sein, ändern Sie einfach 'uid' => '0' durch 'uid'=> \Drupal::currentUser()->id():

$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