0
私は、異なる言語に対応する簡単なルーティング設定をしています。目的は、言語の最初のパラメータとして、/en/docs
または/de/docs
のようなURLを持つことです。予想通りスコープのそれぞれが取り組んでいるCakePHP 3:ルータスコープの切り替え
$builder = function ($routes)
{
$routes->connect('/:controller', ['action' => 'index']);
$routes->connect('/:controller/:action/*', ['action' => 'index']);
};
$languages = ['en', 'de'];
foreach ($languages as $lang) {
Router::scope('/'.$lang, ['language' => $lang], $builder);
}
Router::addUrlFilter(function ($params, $request) {
if ($request->param('language')) {
$params['language'] = $request->param('language');
}
else {
$params['language'] = 'en';
}
return $params;
});
:言語の定義は、以下のショーとしてscopes
として設定されています。より複雑な接続と接頭辞を使用しても(コードを読みやすくするために上のコードから削除しました)
問題は次のとおりです。どのように言語(スコープ)を切り替えるためのリンクを作成するのですか?
私は別のURLを試してみましたが、現在のURL(例えば/de/docs
)に応じて、言語パラメータが作成されたURLには影響しません。
Router::url(['language' => 'en', 'controller' => 'docs']);
// -> /de/docs (expected: /en/docs)
Router::url(['language' => 'de', 'controller' => 'docs']);
// -> /de/docs
予想を取得するためにルートを修正する方法URL?