hou*_*ous 2 php redirect symfony
我想在动作控制器之后重定向到上一页,但是我收到了这个错误. Symfony版本2.5.8
Cannot redirect to an empty URL.
500 Internal Server Error - InvalidArgumentException
Run Code Online (Sandbox Code Playgroud)
这是actiuon:
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);
}
Run Code Online (Sandbox Code Playgroud)
更新
出现错误是因为我直接在浏览器地址栏中键入了操作链接.
小智 6
具有引用的解决方案不可靠,它是null.代理,浏览器可能会削减它.你首先需要检查$referer变量.
$referer = $this->getRequest()->headers->get('referer');
if ($referer == NULL) {
$url = $this->router->generate('fallback_url');
} else {
$url = $referer;
}
Run Code Online (Sandbox Code Playgroud)