我想在动作控制器之后重定向到上一页,但是我收到了这个错误。 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);
}
已更新
出现错误是因为我直接在浏览器地址栏中输入了操作链接。
答案 0 :(得分:6)
使用referer的解决方案不可靠,它是null
。代理,浏览器可能会削减它。您最初需要检查$referer
变量。
$referer = $this->getRequest()->headers->get('referer');
if ($referer == NULL) {
$url = $this->router->generate('fallback_url');
} else {
$url = $referer;
}