この記事 でソリューションを実装しました。
" 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);
}
}
しかし、View ファイルには、.xml を使用せずに記述された多くの URL があります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>
しかし、それは良い方法ではないようです。URL にプレフィックスを追加するより良い方法はありますか。または、すべてのリンクに手動で追加する必要がありますか?
関連:
CakePHP のすべての URL にプレフィックスを追加する
CakePHP 2.x i18n ルート
CakePHP 2.1 URL 言語パラメーター