在symfony 1.2.8上,当改变用户文化时,我不得不重定向到同一页面。这意味着如果用户从某个动作改变文化,它应该返回到同一个动作而不是转到index
页面我发现了关于SF的模拟器问题,但它也会转到索引页面
Language switcher, redirect to current page with symfony
修改 问题是我的请求来自symfony实际上来自另一个索引文件所以我不能使用$ this-> redirect($ request-> getReferer());
答案 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');
}
这是肮脏的黑客,但它对我有用。