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 中获取 title
和 content
中的参数?
苗条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 变量?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Eloquent ORM 使用 Twig 视图进行 Slim 3 分页