ここに私の最初の投稿です:)
URL とパラメータの扱いに問題があります。ルーター クラス API のドキュメントを何度も読みましたが、役に立たないことがわかりました。
まず、CakePHP(1.3) で URL を処理するための「ユニバーサル」フォーマットがあるかどうかを知りたいです。私は現在、すべての URL を単純な配列 (Router::url および $html->link が受け入れる形式) として処理しており、それらを引数として Cake 独自のメソッドに渡すだけであれば簡単です。何か他のものが必要な場合、通常は注意が必要です。
主に、文字列 URL を基本的な配列形式に変換する際に問題が発生しています。$arrayUrl を文字列に変換し、さらに URL に変換したいとします。
$arrayUrl=array('controller'=>'SomeController','action'=>'someAction','someValue');
$url=Router::url($arrayUrl); //$url is now '/path/to/site/someController/someAction/someValue'
$url=Router::normalize($url); //remove '/path/to/site'
$parsed=Router::parse($url); /*$parsed is now
Array(
[controller] => someController
[action] => someAction
[named] => Array()
[pass] => Array([0] => someValue)
[plugin] =>
) */
2 つのコア フォーマット間で変換するのと同じくらい単純なことを行うには、非常に多くのコードのように思えます。また、$parsed は $arrayUrl と同じではないことに注意してください。もちろん、 $parsed を手動で微調整することもできます。実際、簡単なパッチとして数回実行しましたが、これについて詳しく説明したいと思います。
また、プレフィックス ルーティングを使用する場合、コントローラーの $this->params にはアクション ([action] => 'admin_edit') にプレフィックスが埋め込まれており、Router::parse() の結果には含まれていないことにも気付きました。もちろん、両方とも独自のキーにプレフィックスがあります。
要約すると、これら 3 つ (プレフィックスを含める場合は 4 つ) のいずれかの間で URL を正しい方法で変換するにはどうすればよいですか? もちろん、これをハックするのは簡単ですが、ケーキは私よりも多くの経験と洞察を持った多くの人々によって開発されていると信じたいので、良い方法があると思います.この「認識された不正行為」の理由。
私は自分の問題をできる限りうまく提示しようとしましたが、英語のスキルが乏しいため、いくつかの回り道をしなければなりませんでした:)必要に応じてさらに説明します.