我實施瞭解決方案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