2017-07-29 2 views
2

は私が/redirect/server?site=local&name=john取得クエリ文字列パラメータ3

に要求を行った場合、私は

$request->getAttribute('subject') 
subject権利を取得することができ、フォーム

$app->get('/redirect[/{subject}]', function ($request, $response, $args) { 

}); 

getルートを持っています

ただし、クエリパラメータを取得できません。私は$request->getQueryParams()を検査した場合、私は得る:

[ 
    '/redirect/server?site' => 'local', 
    'name' => 'john' 
] 

私は、クエリを期待しているはずだのに対し

[ 
    'site' => 'local', 
    'name' => 'john' 
] 

私が間違って何をやっているようにparamsは?おそらく、私はurlパラメータが疑問符を受け入れてはならないと指定するべきでしょうか?

編集1

私は私のウェブサーバの設定を掲示するように求めてきました。私は明日、そのdevマシンにアクセスしますので、これは自分自身に上記の情報を追加することを思い出させることに過ぎません。 しかし @jmattheisはすでに私にヒントをくれました。

location/{ 
     try_files $uri $uri/ /index.php?$request_uri; 
    } 

この設定が働いている:私はある時点で2スリムのために提案されるために使用される書き換えスニペットを使用しているのに対し

Slim Framework 3 setup for nginxはライン

location/{ 
     try_files $uri /index.php$is_args$args; 
    } 

に沿って何かを言います私にとっては何年もの間うまくいきましたが、疑問符の後に来るものは何も解析しようとはしませんでした。今では、生の翻訳$_REQUESTをSlimルーティングメソッドに変換しようとしている、放棄されたプロジェクトをフォークしています。

編集2

プロジェクトのコードベースは、レポphpPgAdmin6です。基本的には、ルートロジックを持たないphpPgAdminというフォークだから、要求と応答を特定の範囲に集中させ、スリムなネイティブメソッドを使用してクエリ文字列を解析しようとしています。

+0

私にとっては、どちらも期待通りに動作するスリムなバージョンです。 – jmattheis

+0

バージョン3.8.1、私はドキュメントのルートのサブフォルダでアプリケーションを実行していますが、違いはありませんか? – amenadiel

+0

あなたの投稿してください。htaccessファイル – jmattheis

答えて

2

あなたは二番目は、この

のようなものになるでしょうクエリパラメータとして全体のリクエストURIを追加し

location/{ 
    try_files $uri /index.php$is_args$args; 
} 

代わりの

location/{ 
    try_files $uri $uri/ /index.php?$request_uri; 
} 

を使用する必要が出ていたよう

index.php?/redirect/server?site=local&name=john 

のため、/redirect/server?siteがquery-keyとして指定されました。

+0

ええ、あなたのコメントのおかげで、私はこの欠陥に気付きました。もちろん、Slimは名前付きパラメータに関してはこれについて不平を言っていませんが、クエリ文字列自体は実際にはまったく異なった動作をします。私は '$ request-> getUri() - > getQuery()'を疑問符で分解して、クエリ文字列を取得しました。今私はもうそれを必要としません!ありがとうございました! – amenadiel

関連する問題