【发布时间】:2017-07-29 00:29:39
【问题描述】:
我在表单中有一个get 路由
$app->get('/redirect[/{subject}]', function ($request, $response, $args) {
});
如果我向/redirect/server?site=local&name=john提出请求
我可以得到subject 的权利
$request->getAttribute('subject')
但是,我无法获取查询参数。如果我检查$request->getQueryParams(),我会得到:
[
'/redirect/server?site' => 'local',
'name' => 'john'
]
而我希望查询参数是
[
'site' => 'local',
'name' => 'john'
]
我做错了什么?也许我应该指定 url 参数不能接受问号?
编辑 1
我被要求发布我的网络服务器配置。明天我可以访问那台开发机器,所以这只是提醒我自己添加上述信息。 不过 @jmattheis 已经给了我提示。
Slim Framework 3 setup for nginx 说了一些类似的话
location / {
try_files $uri /index.php$is_args$args;
}
而我正在使用曾经在某个时间点为 slim 2 建议的重写 sn-p:
location / {
try_files $uri $uri/ /index.php?$request_uri;
}
这个配置多年来一直对我很好,但碰巧我从未尝试过解析问号之后的任何内容。刚刚fork了一个废弃的项目,正在尝试将原始$_REQUEST解析转换为Slim路由方法。
编辑 2
该项目的代码库位于 repo phpPgAdmin6。它基本上是 phpPgAdmin 的一个分支,没有路由逻辑,所以我试图将请求和响应集中到给定的范围内,并使用 Slim 原生方法解析查询字符串。
【问题讨论】:
-
哪个苗条的版本,对我来说一切正常。
-
版本 3.8.1,我在文档根目录的子文件夹中运行应用程序,但这应该没有什么不同,不是吗?
-
请发布您的 .htaccess 文件
-
请让我们更多地了解您的应用程序目录结构和 .htaccess 文件的内容。作为旁注,您可以使用
$args['subject']而不是$request->getAttribute('subject') -
@jmattheis 就是这样。
try files指令使用$request_uri而不是$is_args$args。现在它按预期工作。请对此问题做出回答,说明该错误,以便我将其标记为已解决。当您的评论指出我正确的方向时,回答我自己的问题会感觉不对。
标签: slim