ルートで次のデフォルトの動作を定義したいと思います。
Url: myapp.com/mymodule/mycontroller/myaction/q/someTerm/key/someValue/key2/anotherValue
この URL は、ディスパッチャーに次のパラメーターを与える必要があります。
array(
'q' => 'someTerm',
'key' => 'someValue',
'key2' => 'anotherValue'
):
ルーターを拡張して独自に実装することで簡単に実行できることはわかっていますが、Phalcon に、デフォルトでオンに切り替えるデフォルト フラグがあるかどうか疑問に思っていました。
今、ルートを適用すると
「:module/:controller/:action/:params」をこの URL に追加すると、次のパラメーターが取得されます。
array(
0 => 'q',
1 => 'someTerm',
2 => 'key'
... etc
);
これは私が望んでいないことです。
Phalcon ルーターにこれを行うデフォルト フラグがない場合、コントローラーの DI ディスパッチャーでパラメーターが使用可能になる直前に発生するイベントはありますか? コントローラーに到達する前に、少なくともキー=>値のペアに手動でマップしたいと思います。
編集:私は今、コントローラーの beforeExecuteRoute イベントを調べています。必要なことを行う必要があります。しかし、ルーターがこれを自動的に行った場合でも、私はそれを望んでいます-時々、パラメーターが固定された順序でなかったり、それらのいくつかが消えたりします(複雑な検索クエリを考えてください)。