Я попытался сохранить мои pdf-файлы в файловой системе медиа-пакета sonata и вставить правильную запись в базу данных.
Я создал свой файл с помощью dompdf следующим образом:
$dompdf = new Dompdf($pdfOptions);
$html = $this->renderView("pdf/hrprotokoll.html.twig", [
'result' => $result,
'vals' => $vals,
'title' => 'Prüfprotokoll',
'item' => $item,
]);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$output = $dompdf->output();
$publicDirectory = $request->server->get('DOCUMENT_ROOT') . '/uploads/hrprotokolle/'.$this->getUser()->getStandort()->getId();
$pdfFilepath = $publicDirectory . '/'. time().'.pdf';
$file = time().'.pdf';
file_put_contents($pdfFilepath, $output);
ok, теперь файл сохранен правильно, без ошибок. Теперь вопрос заключается в том, как управлять этим файлом с помощью Sonata MediaBundle. Я пробовал следующее:
$mediaManager = new MediaManager();
$media = new Media();
$media->setBinaryContent($file);
$media->setContext('default');
$media->setProviderName('sonata.media.provider.file');
$mediaManager->save($media);
Ошибка:
Too few arguments to function Sonata\Doctrine\Model\BaseManager::__construct(), 0 passed... ($mediaManager)
Я не могу установить правильный путь. У кого-нибудь есть идея решить эту проблему? Thx