动作控制器后重定向到上一页

时间:2014-12-26 15:00:47

标签: php symfony redirect

我想在动作控制器之后重定向到上一页,但是我收到了这个错误。 Symfony版本2.5.8

Cannot redirect to an empty URL.
500 Internal Server Error - InvalidArgumentException

这是活动:

    public function addFavoriteAction(Travel $travel, Request $request)
    {

    if (!$this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
        return $this->redirect($this->generateUrl('fos_user_security_login'));
    }

    if ($request->getMethod() == 'GET') {

    $favorite = new Favorite();

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

    $favorite->setUser($this->get('security.context')->getToken()->getUser());
    $favorite->setTravel($travel);


    $em->persist($favorite);
    $em->flush();
    }

    $referer = $this->getRequest()->headers->get('referer');
    return $this->redirect($referer);
}

已更新

出现错误是因为我直接在浏览器地址栏中输入了操作链接。

1 个答案:

答案 0 :(得分:6)

使用referer的解决方案不可靠,它是null。代理,浏览器可能会削减它。您最初需要检查$referer变量。

    $referer = $this->getRequest()->headers->get('referer');
    if ($referer == NULL) {
        $url = $this->router->generate('fallback_url');
    } else {
        $url = $referer;
    }