Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
slimphp和GET参数_Php_Rest_Slim - Fatal编程技术网

slimphp和GET参数

slimphp和GET参数,php,rest,slim,Php,Rest,Slim,我正在使用slimphp作为restfulapi的框架,到目前为止,它非常棒。非常容易处理,但我确实有一个问题找不到答案。如何在Slim PHP中从URL获取参数 例如,如果我想使用以下内容: http://api.example.com/dataset/schools?zip=99999&radius=5 一个星期一的案例?我是不是想得太多了?提前谢谢 不太清楚Slim PHP,但如果您想从URL访问参数,则应使用: $_SERVER['QUERY_STRING'] 你会在谷歌上找

我正在使用slimphp作为restfulapi的框架,到目前为止,它非常棒。非常容易处理,但我确实有一个问题找不到答案。如何在Slim PHP中从URL获取参数

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

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

一个星期一的案例?我是不是想得太多了?提前谢谢

不太清楚Slim PHP,但如果您想从URL访问参数,则应使用:

$_SERVER['QUERY_STRING']

你会在谷歌上找到一堆博客文章来解决这个问题。您还可以使用PHP函数。

您可以在Slim框架内轻松完成此操作,您可以使用:

$paramValue = $app->request()->params('paramName');
$app此处是一个瘦实例

或者如果你想更具体一些

//获取参数

$paramValue = $app->request()->get('paramName');
$paramValue = $app->request()->post('paramName');
//POST参数

$paramValue = $app->request()->get('paramName');
$paramValue = $app->request()->post('paramName');
你会在特定的路线上这样使用它

$app->get('/route',  function () use ($app) {
          $paramValue = $app->request()->params('paramName');
});
您可以阅读关于请求对象的文档

截至:


我修复了我的api以接收类似这样的json主体或url参数

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

这可能不适合所有人,但对我来说很有效。

如果您想获得参数名为的参数

$value = $app->request->params('key');
$data = json_decode( $app->request->getBody() ) ?: $app->request->params();
params()方法将首先搜索PUT变量,然后搜索POST变量,然后搜索GET变量。如果未找到变量,则返回null。如果只想搜索特定类型的变量,可以使用以下方法:

//---获取变量

//---后置变量

//---PUT变量


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

$value = $app->request->params('key');
$data = json_decode( $app->request->getBody() ) ?: $app->request->params();
$data将是一个数组,包含请求中的所有字段,如下所示

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

希望它能帮助你

对于Slim 3/4您需要在PSR 7
请求
对象上使用方法
getQueryParams()

引用/文件:

可以在上以关联数组的形式获取查询参数 使用getQueryParams()请求对象


使用
$id=$request->getAttribute('id')//其中id是Slim 3.0中参数的名称,以下内容也适用:

routes.php

require_once 'user.php';

$app->get('/user/create', '\UserController:create');
class UserController
{
    public function create($request, $response, array $args)
    {
        $username = $request->getParam('username'));
        $password = $request->getParam('password'));
        // ...
    }
}
user.php

require_once 'user.php';

$app->get('/user/create', '\UserController:create');
class UserController
{
    public function create($request, $response, array $args)
    {
        $username = $request->getParam('username'));
        $password = $request->getParam('password'));
        // ...
    }
}

可能对大多数人来说都很明显,但为了以防万一,在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);
                }
            }
        }
苗条3


这些是不是得到参数??你确定吗?布莱格!对不起,我的意思是GET,不是POST。那么$\u GET变量呢?不起作用吗?只需使用
$\u GET['zip']
$\u GET['radius']
George P和fire是对的,我只需使用$\u GET['var']。我想可能是因为SlimPHP的内置路由,我不得不做一些花哨的事情,但没有。好的老式$u GET[]工作得很好。只是想得太多了-谢谢大家!我建议坚持使用$app->request->get('paramName');即使这样也行。@Alex你能解释一下为什么你会推荐它吗?@Holonaut这就是框架希望使用参数的方式。考虑未来,添加新的中间件来逃避、编码或修剪空白。使用
$\u服务器['param']
的应用程序将无法获得好处,其中,
$app->request()->get('paramName')是的,我们可以去看文档,但你的答案解释得更好;)谢谢你发布这个。很难找到与Slim 3相关的问题和答案。不知何故,我得到了
getQueryParam()
方法未找到,但
getQueryParams()
工作正常。
getParam()
-方法未找到您使用的Slim是哪个版本?请参见此处的Slim v3.0相关文档: