slimphp和GET参数
我正在使用slimphp作为restfulapi的框架,到目前为止,它非常棒。非常容易处理,但我确实有一个问题找不到答案。如何在Slim PHP中从URL获取参数 例如,如果我想使用以下内容: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'] 你会在谷歌上找
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相关文档: