如何在 Sonata/Symfony 3.3 中设置内容配置?

Posted

技术标签:

【中文标题】如何在 Sonata/Symfony 3.3 中设置内容配置?【英文标题】:How to set content disposition in Sonata/Symfony 3.3? 【发布时间】:2018-08-25 17:00:56 【问题描述】:

我有一个在 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 会在浏览器中打开。

我想设置文件的配置,以便下载而不是在浏览器中打开。我该怎么做?

到目前为止我已经尝试过:在 Application\Sonata\MediaBundle\Entity\Meida 及其父类中进行挖掘似乎没有产生任何这样做的方法。也许我找错地方了?

【问题讨论】:

【参考方案1】:

TIL 有一个简单的旧 HTML 方法可以做到这一点。

<a href="% path media, 'reference' %" target="_blank" download>View as PDF</a>

https://caniuse.com/#feat=download

【讨论】:

以上是关于如何在 Sonata/Symfony 3.3 中设置内容配置?的主要内容,如果未能解决你的问题,请参考以下文章

Sonata admin 基于 ODM 的子管理员在基于 ORM 的管理员上

奏鸣曲 | Symfony 3 |根据用户角色配置路由

USB传输协议。——Arvin

Xcode自动签名不断失败

如何在 Mac OSX 上将我的 OpenGL 从 2.1 升级到 3.3?

如何加快 OpenGL 中纹理的绘制速度? (3.3+/4.1)