web-dev-qa-db-ja.com

Slim PHPおよびGETパラメーター

私はSlim PHPをRESTful APIのフレームワークとして使っています。これまでのところ素晴らしいです。一緒に作業するのはとても簡単ですが、答えが見つかりません。 。Slim PHPでURLからGETパラメーターを取得するにはどうすればよいですか?

たとえば、次を使用したい場合:

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

月曜日の場合?私はそれを考え直していますか?前もって感謝します!

55
Eric Arenson

Slimフレームワーク内で非常に簡単にこれを行うことができます。

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

ここの$ appはSlimインスタンスです。

または、より具体的にしたい場合

// 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/

Slim v の時点:

$app->get('/route', function ($request, $response, $args) {
    $paramValue = $request->params(''); // equal to $_REQUEST
    $paramValue = $request->post(''); // equal to $_POST
    $paramValue = $request->get(''); // equal to $_GET

    // ...

    return $response;
});
106
Martijn

Slim 3の場合、PSR 7 RequestオブジェクトでgetQueryParams()メソッドを使用する必要があります。

引用 ドキュメント

GetQueryParams()を使用して、Requestオブジェクトの連想配列としてクエリパラメータを取得できます。

GetQueryParam($ key、$ default = null)を使用して、パラメーターが欠落している場合はオプションのデフォルト値を使用して、単一のクエリパラメーター値を取得することもできます。

22
vlp

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

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

これは誰にも当てはまらないかもしれませんが、私にとってはうまくいきました。

3
Mulhoon

Slim 3.0では、以下も機能します:

routes.php

require_once 'user.php';

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

ser.php

class UserController
{
    public function create($request, $response, array $args)
    {
        $username = $request->getParam('username'));
        $password = $request->getParam('password'));
        // ...
    }
}
2
Tamas Kalman

パラメータ名付きのパラメータを取得する場合

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

params()メソッドは最初にPUT変数を検索し、次にPOST変数、次に変数をGETします。変数が見つからない場合はnullが返されます。特定のタイプの変数を検索したい場合は、代わりに次のメソッドを使用できます:

// --- GET変数

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

// --- POST variable

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

// --- PUT変数

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

パラメータ名を指定せずにリクエストからすべてのパラメータを取得したい場合は、それらをすべてフォーマットキー=>値の配列に取得できます

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

$ dataは、以下のリクエストからのすべてのフィールドを含む配列になります

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

それがあなたを助けることを願っています!

1
KlevisGjN

Slim PHPについてはよくわかりませんが、URLからパラメーターにアクセスしたい場合は、以下を使用する必要があります。

$_SERVER['QUERY_STRING']

これを解決するために、Googleに多数のブログ投稿があります。 PHP関数 parse_url を使用することもできます。

1
George P

$id = $request->getAttribute('id'); //where id is the name of the paramを使用します

1

おそらくほとんどの人にとって明らかですが、念のため、Slimに関するvipの答えに基づいて、次のようなものを使用してパラメーターの値を取得できます。

        $logger = $this->getService('logger');
        $params = $request->getQueryParams();
        if ($params)  {
            foreach ($params as $key => $param)     {
                if (is_array($param))   {
                    foreach ($param as $value)  {
                        $logger->info("param[" . $key . "] = " . $value);
                    }
                }
                else    {
                    $logger->info("param[" . $key . "] = " . $param);
                }
            }
        }
0
bkudrle