私はSlim PHPをRESTful APIのフレームワークとして使っています。これまでのところ素晴らしいです。一緒に作業するのはとても簡単ですが、答えが見つかりません。 。Slim PHPでURLからGETパラメーターを取得するにはどうすればよいですか?
たとえば、次を使用したい場合:
http://api.example.com/dataset/schools?zip=99999&radius=5
月曜日の場合?私はそれを考え直していますか?前もって感謝します!
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;
});
Slim 3の場合、PSR 7 Request
オブジェクトでgetQueryParams()
メソッドを使用する必要があります。
引用 ドキュメント :
GetQueryParams()を使用して、Requestオブジェクトの連想配列としてクエリパラメータを取得できます。
GetQueryParam($ key、$ default = null)を使用して、パラメーターが欠落している場合はオプションのデフォルト値を使用して、単一のクエリパラメーター値を取得することもできます。
Json body ORこのようなurlパラメーターを受け取るようにAPIを修正しました。
$data = json_decode($request->getBody()) ?: $request->params();
これは誰にも当てはまらないかもしれませんが、私にとってはうまくいきました。
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'));
// ...
}
}
パラメータ名付きのパラメータを取得する場合
$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',
//...
);
それがあなたを助けることを願っています!
Slim PHPについてはよくわかりませんが、URLからパラメーターにアクセスしたい場合は、以下を使用する必要があります。
$_SERVER['QUERY_STRING']
これを解決するために、Googleに多数のブログ投稿があります。 PHP関数 parse_url を使用することもできます。
$id = $request->getAttribute('id'); //where id is the name of the param
を使用します
おそらくほとんどの人にとって明らかですが、念のため、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);
}
}
}