我实施了解决方案at this article。CakePHP向URL添加语言参数
“beforeFilter
”和“_setLanguage
”正常工作。如果URL具有语言参数,我可以成功设置Cookie /会话变量。并在控制器之间使用它。
该解决方案还包括将url()
函数添加到AppHelper
。
class AppHelper extends Helper {
function url($url = null, $full = false) {
if(!isset($url['language']) && isset($this->params['language'])) {
$url['language'] = $this->params['language'];
}
return parent::url($url, $full);
}
}
但我有很多网址在我的视图文件中写入而不使用HtmlHelper
。像这样:
// myfile.ctp
<a href="/mypage/">click me plase<a>
所以看起来好像AppHelper :: url解决方案不能解决我的问题。为URL添加语言前缀会更好吗?
我想定义这样一个全局变量:
// AppController::_beforeFilter()
if ($this->request->params['language'] != "")
{
Configure::write('URLprefix', '/'.$this->request->params['language']);
} else {
Configure::write('URLprefix', '');
}
然后改变视图文件是这样的:
// myfile.ctp
<a href="<?php echo URLprefix; ?>/mypage/">click me plase<a>
但它似乎没有一个很好的方法。有没有更好的方式为网址添加前缀?或者我应该手动添加到所有链接?
相关:
Adding a prefix to every URL in CakePHP
CakePHP 2.x i18n route
CakePHP 2.1 URL Language Parameter