2011-11-14 12 views
43

スリムなPHPをRESTfulなAPIのフレームワークとして使用しています。これまでのところ素晴らしいことです。超簡単に扱うことができますが、答えを見つけることができない1つの質問があります。 Slim PHPのURLからGETパラメータを取得するにはどうすればよいですか?月曜日のスリムなPHPとGETのパラメータ

http://api.example.com/dataset/schools?zip=99999&radius=5 

場合:私は次のように使用したい場合例えば

、?私はそれを考えすぎていますか?前もって感謝します!

+1

これらはGETパラメータではありませんか?本気ですか? – Galled

+0

Blerg!私はGETを意味しました、POSTではなく、申し訳ありません。 –

+0

$ _GET変数はどうですか?うまくいきませんか? – Galled

答えて

93

は、使用することができます:ここ

$paramValue = $app->request()->params('paramName'); 

$アプリはスリムインスタンスです。

それともので、特定のルートのように

// GETパラメータ

$paramValue = $app->request()->get('paramName'); 

// POSTパラメータ

$paramValue = $app->request()->post('paramName'); 

あなたはそれを使用することになり、より具体的にしたい場合は

$app->get('/route', function() use ($app) { 
      $paramValue = $app->request()->params('paramName'); 
}); 

リクエストオブジェクトのドキュメントを読むことができます http://docs.slimframework.com/request/variables/

+0

ありがとうございました。あなたの答えは私の問題を解決するのに役立ちました。 – Dibish

+0

ええ、私たちは行くことができますが、あなたの答えははるかに良い説明します;) – Pathros

2

スリムPHPについてあまりわからないが、あなたはURLからパラメータにアクセスしたい場合、あなたは使用する必要があります:あなたはGoogleでブログの記事の束を見つけることができます

$_SERVER['QUERY_STRING'] 

は、この問題を解決します。 PHP関数parse_urlを使用することもできます。あなたがスリム枠組みの中で非常に簡単にこれを行うことができます

+0

ジョージPと火災が正しければ、ちょうど$ _GET ['var']を使わなければなりませんでした。私はSlimPHPの組み込みのルーティングのために多分私は何か派手なことをしなければならないと思ったが、そうではなかった。良い古き良き$ _GET []はうまくいきます。ちょうどそれをoverthinking - ありがとう男! –

+0

$ app-> request-> get( 'paramName')に固執することをお勧めします。これでも動作します。 – Alex

+0

@Alexあなたはそれをお勧めする理由を説明できますか? – Holonaut

3

このようなjson body OR urlパラメータを受け取るようにAPIを修正しました。

$data = json_decode($request->getBody()) ?: $request->params(); 

これは誰にも合わないかもしれませんが、それは私のために働きました。

1

YOUはのparams()メソッドは、最初の変数をGETその後、変数をPUT検索し、その後、POST変数ますPARAMS WITH PARAMのNAMEに

$value = $app->request->params('key'); 

を取得したい場合。変数が見つからない場合、nullが返されます。あなたが唯一の変数の特定のタイプを検索したい場合は、代わりにこれらのメソッドを使用することができます

// ---変数

$paramValue = $app->request->get('paramName'); 

// --- POST変数GET

$paramValue = $app->request->post('paramName'); 

// ---変数

をPUT
$paramValue = $app->request->put('paramName'); 

あなたは= FORMATキーの配列にそれらのすべてを取得することができます 、PARAM名を指定せずに要求からすべてのパラメータを取得したい場合> VALUE

$data = json_decode($app->request->getBody()) ?: $app->request->params(); 

$データが配列されることを

$data = array(
    'key' => 'value', 
    'key' => 'value', 
    //... 
); 

希望のすべてのフィールドが含まれています。

10

スリム3 PSR 7 RequestオブジェクトでgetQueryParams()メソッドを使用する必要があります。 the documentationを引用

あなたはgetQueryParamsを使用して Requestオブジェクトの連想配列としてクエリパラメータを取得することができます()。

getQueryParam($ key、$ default = null)を使用して、パラメータが存在しない場合は、省略可能なデフォルトの 値を使用して、単一のクエリパラメータ値を取得することもできます。

+1

これを投稿していただきありがとうございます。 Slim 3に関連する質問と回答を見つけることは非常に難しいです。 –

0

使用$id = $request->getAttribute('id'); //where id is the name of the param次のようにも働くスリム3.0で

0

routes.phpの

require_once 'user.php'; 

$app->get('/user/create', '\UserController:create'); 

user.php

class UserController 
{ 
    public function create($request, $response, array $args) 
    { 
     $username = $request->getParam('username')); 
     $password = $request->getParam('password')); 
     // ... 
    } 
} 
関連する問題