typo3 - 如何为简单的 GET 参数设置 routeEnhancers?
问题描述
我正在尝试为一个简单的 GET 参数创建一个 routeEnhancer:
/?pageNumber=1&cHash=...
该参数(包括 cHash)由多页站点地图(纯 TypoScript)的页面浏览器生成,可以使用以下简化的 TypoScript 进行模拟:
page.10 = COA
page.10{
10 = LOAD_REGISTER
10{
pageNumber.cObject = TEXT
pageNumber.cObject.value = 0
pageNumber.cObject.override.data= GP:pageNumber
pageNumber.cObject.wrap = (|+1)
pageNumber.prioriCalc = intval
}
20 = TEXT
20{
data = register:pageNumber
typolink {
parameter.data = TSFE:id
additionalParams.data = register:pageNumber
additionalParams.wrap = &pageNumber=|
}
}
}
结果(没有 routeEnhancers):
- 在第 0 页(根页“/”):
<a href="/?pageNumber=1&cHash=...">1</a>
- 在第 1 页:
<a href="/?pageNumber=2&cHash=...">2</a>
- 在第 2 页:
<a href="/?pageNumber=3&cHash=...">3</a>
等等。这可以按预期工作,但我希望有更好的 URL。
我的 routeEnhancers 尝试重写 URL:
routeEnhancers:
PageBrowser:
type: Simple
routePath: '/page/{page_number}'
requirements:
page_number: '[0-9]'
_arguments:
page_number: 'pageNumber'
此 routeEnhancer 的结果:
- 在第 0 页:
<a href="/page/1/">1</a>
- 不幸的是,在第 1 页上,链接保持不变:
<a href="/page/1/">1</a>
似乎编码有效,但解码失败。我究竟做错了什么?
解决方案
看起来 page_number 和 pageNumber 有一些混淆:
我认为此设置可以满足您的需求。(我也不得不手动删除缓存)
page = PAGE
page.10 = COA
page.10{
10 = LOAD_REGISTER
10{
pageNumber.cObject = TEXT
pageNumber.cObject.value = 0
pageNumber.cObject.override.data= GP:pageNumber
pageNumber.cObject.wrap = (|+1)
pageNumber.prioriCalc = intval
}
20 = TEXT
20{
data = register:pageNumber
typolink {
parameter.data = TSFE:id
additionalParams.data = register:pageNumber
additionalParams.wrap = &pageNumber=|
}
}
}
routeEnhancers:
PageBrowser:
type: Simple
routePath: '/page/{pageNumber}'
requirements:
pageNumber: '[0-9]+'
推荐阅读
- npm - npmjs 复制和 npmjs 注册表之间的区别
- python - 阻止日志脚本被多个线程访问
- c - 内部由管道连接的具有父/子进程的迭代器未正确递增
- node.js - 请求中编码的请求表单 URL
- .net - 使用 Microsoft.SharePoint.Client.ClientContext 在线对 SharePoint 进行身份验证在 VS 中有效,在 Azure 函数中失败
- python - 我可以让一个小部件在 pyQt 中跨越多列吗
- c# - C# + Unity - 从类列表中的变量中获取 MIN 值
- python - 解析在浏览器中本地运行的网站?
- gitlab - 如何将 Gitlab CDN 适配器与不提供 ETag 的 Azure 标准 CDN 一起使用
- kubernetes - 通过 Helm 的 Kubernetes GitLab Runner 无法注册