[英]How to save pdf files with Sonata Media Bundle
我試圖將我的 pdf 文件保存到奏鳴曲媒體包的文件系統中,並插入正確的數據庫條目。
我用 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);
好的,現在文件已正確保存,沒有錯誤。 現在的問題是如何使用 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)
我無法設置正確的方式。 有人有解決這個問題的想法嗎? 謝謝
問題是:$mediaManager (service sonata.media.manager.media) 不能自動裝配,所以您必須手動執行此操作。
首先在您的終端中檢查此服務,並通過鍵入以下內容查找有關此服務的信息:
php bin/console debug:container sonata.media.manager.media
結果是:
Service ID sonata.media.manager.media
Class Sonata\MediaBundle\Entity\MediaManager
好的,現在 go 到您的 services.yaml 並創建別名:
Sonata\MediaBundle\Entity\MediaManager: '@sonata.media.manager.media'
完成。 現在您可以注入 MediaManager,它對我有用:
use Sonata\MediaBundle\Entity\MediaManager;
private $mediaManager;
public function __construct(MediaManager $mediaManager)
{
$this->mediaManager = $mediaManager;
}
$media = new Media();
$this->mediaManager->save($media);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.