2011-11-14 89 views
43

我正在玩Slim PHP作爲RESTful API的框架,到目前爲止它非常棒。超級易於使用,但我確實有一個問題,我無法找到答案。如何從Slim PHP中的URL獲取GET參數?Slim 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'); 

$此應用程序是一個苗條的實例。

或者,如果你想更具體的

//獲取參數

$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訪問參數,那麼你應該使用:

$_SERVER['QUERY_STRING'] 

你會發現一堆在谷歌博客文章來解決這個問題。您也可以使用PHP功能parse_url

+0

George P並且fire是正確的,我只需要使用$ _GET ['var']。我想也許是因爲SlimPHP的內置路由,我不得不做一些奇特的事情,但不是。良好的老式$ _GET []工作得很好。只是推翻它 - 謝謝你們! –

+0

我會建議堅持$ app-> request-> get('paramName');即使這樣做確實有效。 – Alex

+0

@Alex你能解釋爲什麼你會推薦這個嗎? – Holonaut

3

我修復了我的api以接收這樣的json主體或url參數。

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

這可能不適合每個人,但它對我有用。

1

IF你想獲得PARAMS WITH PARAM NAME

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

的PARAMS()方法將首先搜索PUT變量,然後POST變量,然後GET變量。如果找不到變量,則返回null。如果你只是想搜索特定類型的變量,你可以使用這些方法來代替:

// --- GET變量

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

// --- POST變量

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

// --- PUT變量

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

IF要獲取所有參數FROM REQUEST而不指定PARAM NAME, 你可以得到所有THEM到陣列中FORMAT KEY => 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

0

在超薄3.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')); 
     // ... 
    } 
}