0

SLIM 2.0.0 を使用しています

->params() を GET で使用することは可能ですか?

以下の例では

  • POSTで呼び出すと、次curl -d "param1=hello&param2=world" http://localhost/fooのように出力されます:helloworld CORRECT!!
  • GET で呼び出すと、次http://localhost/foo/hello/worldのように出力されます: NOTHING!! <- 違います!!

なんで?

<?php
require 'Slim/Slim.php';

\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app -> get('/foo/:param1/:param2', 'foo');
$app -> post('/foo', 'foo');
$app -> run();

function foo() {
    $request = \Slim\Slim::getInstance() -> request();
    echo $request -> params('param1');
    echo $request -> params('param2');
}
?>
4

1 に答える 1

4

解決しました!ドキュメントページRequest Variables - Slim Framework Documentationで、私はこれを読みました:

HTTP リクエストには変数が関連付けられている場合があります (ルート変数と混同しないでください)。現在の HTTP リクエストで送信された GET、POST、または PUT 変数は、Slim アプリケーションのリクエスト オブジェクトを介して公開されます。

タイプを考慮せずにリクエスト変数の値をすばやく取得したい場合は、リクエスト オブジェクトの params() メソッドを使用します。

<?php
$req = $app->request();
$paramValue = $req->params('paramName');

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

<?php
// Get request object
$req = $app->request();

//GET variable
$paramValue = $req->get('paramName');

//POST variable
$paramValue = $req->post('paramName');

そう:

要点は、「HTTP リクエストには変数が関連付けられている可能性があります (ルート変数と混同しないでください)」です。

http://domain.com/foo/hello/wold?name=brian

上記の URI では、ルート変数/パラメーターは「/foo/hello/world」部分から読み取られます。リクエスト GET 変数はクエリ文字列 ('name=brian') から読み取られ、$app->request()->get('name') または $app->request()->params(' でアクセスできます。名前')。

リクエストの POST 変数は、リクエストの本文から解析され、$app->request()->post('param1') または $app->request()->params('param1') でアクセスできます。

ブライアン・ネスビットに感謝

于 2012-09-13T15:23:22.350 に答える