Slim 3 - 如何获取所有 get/put/post 变量?

Posted

技术标签:

【中文标题】Slim 3 - 如何获取所有 get/put/post 变量?【英文标题】:Slim 3 - how to get all get/ put/ post variables? 【发布时间】:2015-12-16 13:22:36 【问题描述】:

我如何获得all get/ put/ post 变量,如 Slim 2 中的 Slim 3?

苗条2,

$allGetVars = $app->request->get();
$allPutVars = $app->request->put();
$allPostVars = $app->request->post();

如何在 Slim 3 中做到这一点?

例如,http://example.com/books/1?title=hello&content=world

我现在如何在 Slim 3 中获取 titlecontent 中的参数?

苗条2,

$title = $app->request->get('title');
$content = $app->request->get('content');

如何在 Slim 3 中做到这一点?

【问题讨论】:

【参考方案1】:

Request Uri:getQueryParams()

Request Body:getBody()/getParsedBody()

这不是您正在寻找的,但它非常接近。

【讨论】:

【参考方案2】:

获取所有get/put/post参数:

//GET
$allGetVars = $request->getQueryParams();
foreach($allGetVars as $key => $param)
   //GET parameters list


//POST or PUT
$allPostPutVars = $request->getParsedBody();
foreach($allPostPutVars as $key => $param)
   //POST or PUT parameters list

单个参数值:

//Single GET parameter
$getParam = $allGetVars['title'];

//Single POST/PUT parameter
$postParam = $allPostPutVars['postParam'];

【讨论】:

谢谢伙计!很难找到这个 你好。它对我不起作用。唯一“起作用”的是$request->getHeaders();,它添加了 HTTP_ 作为前缀。例如,如果我使用 length 作为 post 参数,使用 getHeaders() 我会得到 HTTP_LENGTH。我不明白为什么。 getParsedBody() 基本上返回 NULL。谢谢! PS:最奇怪的是:如果我做$request->hasHeader('length'),我得到了我的参数的值。 @TDK 您如何发送请求以及您使用的是哪个版本的 Slim? @Davide 我正在使用 Slim 3,我正在通过 Advanced REST client 发送 POST 请求来测试它。 为什么这么复杂?我也可以使用普通的旧$_GET【参考方案3】:

获取所有请求参数:

$request->getParams() 

【讨论】:

【参考方案4】:

您可以使用map() 方法将get、post 和put 组合到一个路由中。

$app->map(['GET', 'POST', 'PUT'], function(Request $request, Response $response, array $args))  

第一个参数是要匹配的 HTTP 方法的数组。第二个参数是处理请求的函数;传递请求、响应和参数数组。

【讨论】:

这没有回答问题。

以上是关于Slim 3 - 如何获取所有 get/put/post 变量?的主要内容,如果未能解决你的问题,请参考以下文章

手动安装Slim 3.x.

如何使用Slim框架支持API版本控制

使用 Eloquent ORM 使用 Twig 视图进行 Slim 3 分页

jQuery3 slim版本和普通版本区别,如何选择?

学习Slim Framework for PHP v3 --route怎么被调用的?

使用 Slim PHP 获取 PUT 参数