65

我正在使用 Slim PHP 作为 RESTful API 的框架,到目前为止它很棒。超级容易使用,但我确实有一个问题我找不到答案。如何从 Slim PHP 中的 URL 获取 GET 参数?

例如,如果我想使用以下内容:

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

星期一的例子?我是不是想多了?提前致谢!

4

9 回答 9

118

您可以在 Slim 框架中非常轻松地做到这一点,您可以使用:

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

$app 这里是一个 Slim 实例。

或者如果你想更具体

//获取参数

$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 v3开始:

$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;
});
于 2011-12-31T08:34:18.210 回答
29

对于Slim 3/4,您需要使用getQueryParams()PSR 7Request对象上的方法。

引用Slim 3 / Slim 4文档:

您可以使用 getQueryParams() 将查询参数作为 Request 对象上的关联数组获取。

于 2016-10-08T18:57:25.153 回答
4

我修复了我的 api 以接收这样的 json 正文或 url 参数。

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

这可能不适合所有人,但对我有用。

于 2013-04-09T11:01:22.700 回答
3

苗条 3

$request->getQueryParam('page')

或者

$app->request->getQueryParam('page')
于 2019-09-13T09:32:21.530 回答
2

如果您想获取带有参数名称的参数

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

params() 方法将首先搜索 PUT 变量,然后是 POST 变量,然后是 GET 变量。如果没有找到变量,则返回 null。如果您只想搜索特定类型的变量,则可以使用以下方法:

//--- 获取变量

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

//--- 发布变量

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

//--- 放置变量

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

如果您想从请求中获取所有参数而不指定参数名称,您可以将它们全部放入数组中,格式为 KEY => VALUE

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

$data 将是一个数组,其中包含来自请求的所有字段,如下所示

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

希望对你有帮助!

于 2016-01-26T18:52:31.360 回答
2

采用$id = $request->getAttribute('id'); //where id is the name of the param

于 2017-04-12T15:32:38.687 回答
2

在 Slim 3.0 中,以下内容也有效:

路由.php

require_once 'user.php';

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

用户.php

class UserController
{
    public function create($request, $response, array $args)
    {
        $username = $request->getParam('username'));
        $password = $request->getParam('password'));
        // ...
    }
}
于 2017-06-19T00:30:23.433 回答
1

不太了解 Slim PHP,但如果你想从 URL 访问参数,那么你应该使用:

$_SERVER['QUERY_STRING']

您会在 Google 上找到大量博客文章来解决此问题。您还可以使用 PHP 函数parse_url

于 2011-11-14T17:05:38.147 回答
0

对大多数人来说可能很明显,但以防万一,基于 vip 关于Slim 3的答案,您可以使用类似以下的内容来获取参数的值。

        $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);
                }
            }
        }
于 2019-05-04T16:28:15.203 回答