【发布时间】:2017-06-15 23:18:06
【问题描述】:
在 Fat Free Framework 中,我试图弄清楚如何在路由调用或 routes.ini 文件中指定查询字符串。
我希望能够解码这样指定的路由
http://example.com/search?category=22&term=wide
请注意,如果可能的话,我希望查询字符串中包含不同数量的元素。
提前致谢
【问题讨论】:
在 Fat Free Framework 中,我试图弄清楚如何在路由调用或 routes.ini 文件中指定查询字符串。
我希望能够解码这样指定的路由
http://example.com/search?category=22&term=wide
请注意,如果可能的话,我希望查询字符串中包含不同数量的元素。
提前致谢
【问题讨论】:
框架不允许路由查询字符串,只能路由路径。
因此,要么修改路由以在 URI 路径中包含参数:
;routes.ini
GET /search/@category = MyController->searchByCategory
GET /search/@category/@term = MyController->searchByCategoryAndTerm
(需要严格的参数顺序)
或者您将所有内容路由到同一个控制器并在那里解析查询字符串:
;routes.ini
GET /search = MyController->search
class MyController {
function search(\Base $f3) {
$category=$f3->get('GET.category);
$term=$f3->get('GET.term');
//etc.
}
}
如果您正在实施搜索表单,则第二种解决方案看起来最合适。
【讨论】:
GET /search 就足够了。查询字符串不需要出现在路由定义中。我已经更新了答案。