0
我有一個簡單的路由設置來處理不同的語言。目標是將語言作爲/en/docs
或/de/docs
之類的網址中的第一個參數。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(如/de/docs
),語言參數不具有對創建網址的任何影響:
Router::url(['language' => 'en', 'controller' => 'docs']);
// -> /de/docs (expected: /en/docs)
Router::url(['language' => 'de', 'controller' => 'docs']);
// -> /de/docs
如何解決途徑,以獲得預期網址嗎?