1

私はcakePHPを使用していますが、状況が悪化しました。スラッシュを含む名前付きパラメーターをアクションに渡したい。例えば

http://www.test.com/claim/index/user:rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=

基本的に、「rLbu78h2RpVwLTy / bki3pK1NkkXhCCaYfQ / zXDIfZR4 =」は1つのパラメーターですが、ケーキは最初のスラッシュまでその最初の部分のみを認識します。

名前付きparams配列を出力すると、次のようになります。

Array
(
    [user] => rLbu78h2RpVwLTy
)

スラッシュをエスケープして、ケーキが名前付きパラメーターの一部として受け入れるようにするにはどうすればよいですか?

ありがとうございました

4

1 に答える 1

6

名前付きパラメータを使用しないでください

名前付きパラメーター ( ) を使用でき/foo/this-is:a-named-parameter/ますが、通常の URL 位置/パス引数および/または引数に固執することをお勧めしGETます。名前付きパラメーターを使用して情報をやり取りすることは、優れたソリューションではないことが時間の経過とともに証明されました。

トレーリング スター ルートを使用する

使用している URL の形式を次のように変更すると、次のようになります。

/claim/index/<user token>

次に、末尾のスター ルートを使用して、後に発生するすべてを/index/1 つの変数にキャプチャできます。

Router::connect(
    '/claim/index/**',
    array('controller' => 'claims', 'action' => 'index')
);

/index/このように、 index アクションでそれを受け取った後に何が来るかは問題ではありません:

// Request to /index/rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4=

function index($user) {
    // $user === 'rLbu78h2RpVwLTy/bki3pK1NkkXhCCaYfQ/zXDIfZR4='
}
于 2013-03-21T09:17:49.713 に答える