更改用户文化时如何重定向到同一页面

时间:2011-09-16 08:33:49

标签: php redirect symfony1

在symfony 1.2.8上,当改变用户文化时,我不得不重定向到同一页面。这意味着如果用户从某个动作改变文化,它应该返回到同一个动作而不是转到index页面我发现了关于SF的模拟器问题,但它也会转到索引页面

Language switcher, redirect to current page with symfony

修改 问题是我的请求来自symfony实际上来自另一个索引文件所以我不能使用$ this-> redirect($ request-> getReferer());

2 个答案:

答案 0 :(得分:1)

最简单的方法是重定向到referer。

//actions
$this->redirect($request->getReferer());

您还可以将当前页面网址作为参数附加到用户区域更改网址。

答案 1 :(得分:1)

我拿了this tutorial(关于i18n的工作)并修改了executeChangeLanguage这样的函数:

public function executeChangeLanguage(sfWebRequest $request)
  {
    $form = new sfFormLanguage(
        $this->getUser(),
        array('languages' => array('en', 'fr'))
    );

    $form->process($request);

    // added
    $url = $request->getReferer();
    $newUrl = $url;
    if ($request->getParameter('language') == 'fr') {
    $newUrl = str_replace('.com/en', '.com/fr', $url);
    }
    if ($request->getParameter('language') == 'en') {
    $newUrl = str_replace('.com/fr', '.com/en', $url);
    }
    return $this->redirect($newUrl);

    // old return
    // return $this->redirect('localized_homepage');
  }

这是肮脏的黑客,但它对我有用。