我正在使用 Symfony 4.3
我有一个InvoiceService
,它将发票生成为 pdf 文件。
对于 html 内容,我使用\Twig\Environment::render()
方法。在模板中,我asset()
对图像使用了 twig 函数。
当我从控制器运行此服务时,发票生成没有问题,但是当我从控制台命令运行此服务时,我收到错误:
警告:fopen(/img/core-img/logo.png):无法打开流:没有这样的文件或目录
当不从控制器运行时,是否应该以不同的方式使用 Twig 环境?
这是负责的代码:
$html = $this->twig->render(
'invoice.html.twig',
array(
'reservation' => $reservation,
)
);
$waterMarkText = ($this->kernel->getEnvironment() !== 'production') ? $this->translator->trans('invoice.test_document') : $this->translator->trans('invoice.paid');
$this->mpdf->SetProtection(array('print'));
$this->mpdf->SetTitle("Apartamenty Grodowa 2 - faktura");
$this->mpdf->SetAuthor("Gall");
$this->mpdf->SetWatermarkText($waterMarkText);
$this->mpdf->showWatermarkText = true;
$this->mpdf->watermark_font = 'DejaVuSansCondensed';
$this->mpdf->watermarkTextAlpha = 0.1;
$this->mpdf->SetDisplayMode('fullpage');
$this->mpdf->WriteHTML($html);
$this->mpdf->Output($invoice->getFilePath(),
Destination::FILE);
通过依赖注入$this->twig
并被
传递\Twig\Environment
$this->mpdf
new Mpdf([
'margin_left' => 20,
'margin_right' => 15,
'margin_top' => 48,
'margin_bottom' => 25,
'margin_header' => 10,
'margin_footer' => 10
]);
我试图通过asset('path/to/image')
和包含图像absolute_url(asset('path/to/image'))
,两者都导致白色正方形中的红色 X 代替图像。从控制器运行时,图像就在那里。