我有语言前缀的URL工作得很好(site.com/en/controller/action
和site.com/fr/controller/action
等),但如果有人输入URL 而没有语言,我想重定向到具有该语言的URL。因此,site.com/controller/action
重定向到site.com/xx/controller/action
,其中xx
是指定语言的值,存储在会话(或cookie)中。
我怀疑我可以在$this->params
数组中查找language
索引,如果我找不到它,只需重定向。比如:
if (!isset($this->params['language']) {
$this->redirect(array('controller' => $this->controller, 'action' => $this->action, 'language' => $this->Session->read('Config.language')));
}
但是我担心的是这会丢失任何POST或GET数据。
我错过了什么?
谢谢!
我不是这方面的专家,但我明白总是重定向POST数据是很好的做法。因此,在检查语言之前,对POST数据做你应该做的事情,然后在url中使用适当的语言进行重定向。
看这个:插入cakephp POST参数到URL
您也可以查看this->参数获取GET数据,并将其传递给$this->redirect以携带它。