【问题标题】:How to properly redirect in Symfony?如何在 Symfony 中正确重定向?
【发布时间】:2017-02-09 08:40:10
【问题描述】:

我有一个创建多个数据库条目的路由。创建后,我想转发到获取这些条目并显示它们的路由。

这是获取/显示的路径:

/**
 * @Route("/admin/app", name="appTourOverview")
 */
public function appTourOverviewAction(Request $request)
{

    $em = $this->getDoctrine()->getManager();

    /* Get Network for User */
    $network = $this->getUser()->getNetwork();

    $tours = $em->getRepository('AppBundle:Tour')->toursTodayByNetwork($network);

    return $this->render(':app:index.html.twig', array(
        'tour' => $tours,
        'imagePath' => Constants::IMAGE_PATH_DEV,
        'imagePathGreen' => Constants::IMAGE_PATH_DEV_GREEN,
        'imagePathYear' => Constants::IMAGE_PATH_DEV_YEAR,
    ));
}

这就是我从“数据库路由”重定向的方式:

return $this->redirectToRoute('appTourOverview', array(), 301); 但这会被缓存并且永远不会创建数据库条目...

我试过了:

我从“显示路径”中复制了所有内容,并让它立即返回数据库内容。

/* Get Network for User */
    $network = $this->getUser()->getNetwork()->getId();

    $tours = $em->getRepository('AppBundle:Tour')->toursTodayByNetwork($network);

    return $this->render(':checker:index.html.twig', array(
        'tour' => $tours,
        'imagePath' => Constants::IMAGE_PATH_DEV,
        'imagePathGreen' => Constants::IMAGE_PATH_DEV_GREEN,
        'imagePathYear' => Constants::IMAGE_PATH_DEV_YEAR,
    ));

而不是重定向。不幸的是,这仅在刷新后有效? ($tours第一次为空)

有什么想法吗?

【问题讨论】:

  • 您是否启用了例如 HTTP 缓存?还是你使用其他缓存?
  • 尝试删除重定向的参数和状态码。默认状态码为 302,该代码可能会触发某些事件。 return $this->redirectToRoute('appTourOverview');

标签: php symfony redirect


【解决方案1】:

301 重定向意味着他的页面已永久移动,此信息现在将缓存在您的浏览器中。请将该参数更改为302 或直接删除(这不是必需的)。然后,不幸的是,您需要删除浏览器的缓存,它应该可以工作。

302 表示重定向是临时的,浏览器不会缓存它;

【讨论】:

  • 我明白了,但这并不是真正的“临时”,因为它是预期的行为?我现在用这个stackoverflow.com/a/16753260/1092632 但我觉得你的也很好,所以谢谢!
  • 临时手段——不要缓存。没有别的:)
猜你喜欢
  • 2017-12-02
  • 2017-12-13
  • 2020-09-08
  • 2017-04-26
  • 2018-07-10
  • 2020-02-23
  • 2021-08-10
  • 1970-01-01
相关资源
最近更新 更多