Symfony2:重定向到请求的路径

时间:2012-04-02 18:29:31

标签: redirect symfony controller

我想将用户重定向回他开始请求的路径。

实施例: /简档

/简档/编辑

/简档

OR:

/产品

/简档/编辑

/产品

我需要为此重定向模式设置什么?

2 个答案:

答案 0 :(得分:1)

/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,
    );
}

答案 1 :(得分:0)

您可以将重定向路径作为GET参数(例如redirectTo)传递到编辑页面,并在编辑过程完成后重定向到该路径。

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

您可以通过检查是否提供该参数来使其更加健壮,如果不是,则重定向到某种默认路径。