FatFreeFramework中如何为带固定后缀的路由配置独立控制器?
FatFreeFramework 区分带固定后缀的路由方案
可以实现,你之前的写法无效是因为用了FatFree不支持的路由语法,正确配置需要注意路由顺序和变量定义规则:
正确路由配置
把带固定XYZ后缀的路由放在前面(FatFree按从上到下顺序匹配,先匹配精准规则),并使用正确的变量定义方式:
方式1:正则捕获命名变量
[routes] GET /category/@item<.*>XYZ.html = \Controllers\Category\ItemXYZ->show GET /category/@item.html = \Controllers\Category\Item->show
- 第一个路由中,
@item<.*>表示匹配任意字符作为item变量值,后面紧跟固定的XYZ.html,会精准匹配/category/item1XYZ.html这类请求。 - 在
ItemXYZ控制器里,可通过$f3->get('PARAMS.item')获取到item1这类变量值。
方式2:简化正则捕获
如果不需要命名变量,也可以用更简洁的正则写法:
[routes] GET /category/(.*)XYZ.html = \Controllers\Category\ItemXYZ->show GET /category/@item.html = \Controllers\Category\Item->show
- 这种写法会把
item1这类部分捕获到PARAMS.0中,控制器里用$f3->get('PARAMS.0')获取值。
为什么你的原配置无效?
你之前写的{{@item}}XYZ.html不是FatFree支持的路由语法,框架会把整个{{@item}}XYZ.html当作固定字符串匹配,自然无法匹配到/category/item1XYZ.html这类请求。
内容的提问来源于stack exchange,提问作者Pavel K
相关产品推荐
相关产品推荐

