SYMFONY2:在RedirectResponse中进行最后修饰



这是我拥有的:

我有一条拨打服务以旋转给定图像的路线。

/**
 * @Route("/media/rotate/{id}", name="rotate_image")
 *
 * @ParamConverter(name="media", class="RAMediaBundleEntityMedia")
 *
 * @param Media $media
 *
 * @return RedirectResponse
 */
public function rotateImage(Media $media)
{
    $this->get('ra.image.rotator.service')->rotateImage($media, 90);
    // do the redirect
}

这是我想做的:

在我来自的路线上进行重定向(在推荐人的帮助下)。这确实有效,但是在重定向后未显示旋转图像之后,因为它被缓存。

因此,我认为在当前日期的标题中设置"最后修饰"将迫使浏览器重新加载图像。我试图按照以下方式进行操作:

    if ($referer = $request->headers->get('referer')) {
        $response = new RedirectResponse($referer);
        $response->setLastModified(new DateTime());
        return $response;
    }

,但不幸的是,"最后修改"仅设置在rotate_image路线的标题中,而不是我被重定向到的。

任何想法如何解决此问题?

编辑:

我通过在这样的媒体URL中添加版本参数来"解决"我的问题:

return $mediaUrl . '?v=' . md5($media->getUpdatedAt()->format('Y-m-d H:i:s'));

因此,旋转图像后,我会更新媒体实体,以便将更改版本,并显示"新"图像。

将图像列表的逻辑放在控制器中,并使用twig函数" render"喜欢:{{render(controller('appbundle:appbundle:imagecontroller:imagecontroller:index'',',',',{'',{'媒体':媒体}))}}

您可以为" kernel.response"创建事件侦听器。看看symfony.com/doc/current/event_dispatcher.html使用它修改响应的标题。也许检查图像的最后修改时间戳。

最新更新