Symfony2: перенаправить на запрошенный путь - PullRequest
0 голосов
/ 02 апреля 2012

Я хочу перенаправить пользователя обратно по пути, с которого он начал запрос.

Пример: / profile

/ profile / edit

/ profile

ИЛИ:

/ products

/ profile / edit

/ products

Что я должен установить для этого режима перенаправления?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Внутри вашего контроллера для /profile/edit вы можете захватить страницу, с которой они пришли с $request->headers->get('referer').

Если /profile/edit - это страница с одной формой, я бы, вероятно, просто добавил скрытое поле, в котором указано, куда должен идти перенаправление.

public function editAction(Request $request)
{
    // If you have a POST value coming from the user, it will be used, otherwise
    // assume this is the first time they landed on the page and grab the current 
    // referer. With this method it doesn't matter how many times they submit the form
    // you won't accidentally overwrite the referer URL with /profile/edit. That could
    // lead to a confusing loop.
    $referer = $request->request->get('referer', $request->headers->get('referer'));

    if ($formIsSaved)
    {
        return new RedirectResponse($referer)
    }

    return array(
        // Your template should include a hidden field in the form that returns this.
        'referer' => $referer,
    );
}
0 голосов
/ 02 апреля 2012

Вы можете передать путь перенаправления в качестве параметра GET - скажем, redirectTo - на страницу редактирования, а после завершения процесса редактирования перенаправить на этот путь.

return new RedirectResponse($request->query->get('redirectTo');

Вы можете сделать этоболее надежный, проверяя, предоставляется ли этот параметр, и, если это не так, перенаправляет на какой-либо путь по умолчанию.

...