我有一个在Symfony 3.3上运行的Sonata应用程序。目前,它包括一个块服务,该服务通过以下代码将 PDF 文件从服务传递到模板:
public function execute(BlockContextInterface $blockContext, Response $response = null)
{
$block = $blockContext->getBlock();
$this->load($block);
$settings = $block->getSettings();
$media = $block->getSetting('media');
$blockContext->setSetting('template', 'AppBundle:Block:block_pdf.html.twig');
return $this->renderResponse($blockContext->getTemplate(), array(
'block' => $block,
'settings' => $settings,
'media' => $media,
), $response);
}
。我的 Twig 代码看起来像这样:
<figure class="col-md-12">
<a href="{% path media, 'reference' %}">View as PDF</a>
</figure>
这工作正常,但我发现当我链接到 Twig 模板中的媒体时,PDF 会在浏览器中打开。
我想设置文件的处置,以便它下载而不是在浏览器中打开。我该怎么做?
到目前为止,我所尝试的:在应用程序\Sonata\MediaBundle\Entity\Meida及其父类中挖掘似乎没有产生任何执行此操作的方法。也许我找错了地方?
TIL 有一种普通的旧 HTML 方法来做到这一点。
<a href="{% path media, 'reference' %}" target="_blank" download>View as PDF</a>
https://caniuse.com/#feat=download