次のルートを機能させようとしています。
$router->add('/([a-z]{2})/:namespace/:controller/:action/([^\/]+)', array(
'language' => 1,
'namespace' => 2,
'controller' => 3,
'action' => 4,
'location' => 5
))->setName('location');
Volt テンプレートの関連する (テスト目的のみの) 行は次のようになります。
{{ url({'for': 'location', 'namespace': 'weather', 'controller': 'forecast', 'action': 'precipitation', 'location': 'Hamburg' }) }}
私が欲しいのは//weather/forecast/降水量/ハンブルグですが、代わりに取得できるのは//weather/forecast/降水量/だけです。
次に試したのは
$router->add('/([a-z]{2})/:namespace/:controller/:action/{location:[^\/]+}', array(
'language' => 1,
'namespace' => 2,
'controller' => 3,
'action' => 4,
))->setName('location');
これにより、少なくとも URL の場所がわかりましたが、完全に間違った位置でした: //Hamburg/forecast/降水量/ .
今、Library\Mvc\Router を調べたところ、get()に渡される配列は問題ないように見えます。
Array
(
[for] => location
[namespace] => weather
[controller] => forecast
[action] => precipitation
[location] => Hamburg
[language] => en
)
独自のルーターを使用して翻訳された URL を処理するので、ここでは言語パラメーターを無視できると思います。これまでのところ、カスタム Router は元の Router を呼び出すだけです。
ロケーションパラメータを機能させる方法はありますか?