2014-12-26 5 views
1

Я бы хотел сделать перенаправление на предыдущую страницу после контроллера действия, но я получаю эту ошибку. Symfony версия 2.5.8Перенаправление на предыдущую страницу после действия контроллера

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

Это 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); 
} 

ОБНОВЛЕНО

ошибка приходит потому, что я напечатал ссылку действий непосредственно в адрес браузера бар.

ответ

5

Решения с рефлексии не надежны. Было null. Прокси, браузеры могут быть разрезаны. Сначала вам нужно указать переменную $referer.

$referer = $this->getRequest()->headers->get('referer'); 
    if ($referer == NULL) { 
     $url = $this->router->generate('fallback_url'); 
    } else { 
     $url = $referer; 
    } 
Смежные вопросы