0

以下のように、パラメーターとして URL をコントローラーに渡したい:

$api->get('/getfile/{fileurl}', function(Request $request, $fileurl){
              //do something
}

ここで、{fileurl} は有効な http URL にすることができます。ただし、上記のマッピングは機能せず、結果として 404 になります ({fileurl} 部分のスラッシュが原因でしょうか?)。$fileurl 変数で $url を受け入れるように解決するにはどうすればよいですか?

4

3 に答える 3

2

デフォルトではそれを行わないため、fileurl 部分のスラッシュと一致する正規表現を確認する必要があります。

assert("fileurl", ".*")次のようにルートで呼び出しを行うだけです。

$app->get("/getfile/{fileurl}", function ($fileurl) use ($app) {
    // ...
})->assert("fileurl", ".*");

すべてを飲み込むので、最後のパラメーターであることを確認してください。

于 2013-09-14T06:39:29.713 に答える
1

$fileurl を渡す前に base64_encode() を使用してください

$fileurl = base64_encode(YOUR_URL);

コントローラーで $fileurl をデコードします。

$app->get("/getfile/{fileurl}", function ($fileurl) use ($app) {
  $decoded_fileurl = base64_decode($fileurl);
  // ..
});
于 2013-09-14T23:38:25.717 に答える
0

なぜだめですか?

$app->get("/getfile/{fileurl}", function ($fileurl) use ($app) {
  $decoded_fileurl = urldecode($fileurl);
  // ..
});

urldecode(){{ myvar|e('url') }}まさにこの目的のためのものでした.twigでリンクを作成する前に、URLをエンコードする必要があります.phpと同じくらい簡単urlencode($myvar)です.URLでメールアドレスを渡そうとしたところ、同じ問題に遭遇しました. 後世のためにここに投稿します。

于 2015-12-14T20:33:34.227 に答える