M K*_*ein 4 typo3 symfony-routing tx-news typo3-9.x
升级到 TYPO3 v9.5.14 后,我们的新闻详情页面崩溃了
Symfony\Component\Routing\Exception\InvalidParameterException
路由“tx_news_pi1_1”的参数“p88bd715a41119d0e8087a5d19cb049”必须匹配“[^/]++”(“”给定)以生成相应的URL。
这是怎么回事?
该站点使用此配置:
NewsTagPlugin:
type: Extbase
limitToPages: [14]
extension: News
plugin: Pi1
routes:
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
- routePath: '/{tag-name}/page/{page}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
page: '@widget_0/currentPage'
requirements:
page: '\d+'
defaultController: 'News::list'
defaults:
page: ''
aspects:
page:
type: IntegerMapper
start: 1
end: 5000
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
Run Code Online (Sandbox Code Playgroud)
NewsTagPlugin:
...
routes:
...
- routePath: '/{tag-name}/page/{page}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
page: '@widget_0/currentPage'
requirements:
page: '\d+'
Run Code Online (Sandbox Code Playgroud)
_arguments 定义路由参数和内部变量的映射(例如作为查询参数)requirements 这里是错误的,因为它不应用作参数映射requirements需要在根级别定义NewsTagPlugin NewsTagPlugin:
...
routes:
...
- routePath: '/{tag-name}/page/{page}'
...
defaults:
page: ''
aspects:
...
Run Code Online (Sandbox Code Playgroud)
defaults在 TYPO3 v9.5.14 之前未应用并在https://review.typo3.org/c/Packages/TYPO3.CMS/+/60361 中解决page没有多大意义,并且会导致类似的 URL/some-tag/page/导致答案中显示的错误消息page: 1/some-tag/page/),则需要{!page}在路由路径中使用显式定义 NewsTagPlugin:
type: Extbase
limitToPages: [14]
extension: News
plugin: Pi1
routes:
- routePath: '/{tag-name}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
- routePath: '/{tag-name}/page/{!page}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
page: '@widget_0/currentPage'
defaultController: 'News::list'
defaults:
page: 1
aspects:
page:
type: IntegerMapper
start: 1
end: 5000
tag-name:
type: PersistedAliasMapper
tableName: tx_news_domain_model_tag
routeFieldName: slug
Run Code Online (Sandbox Code Playgroud)
IntegerMapper似乎是一个自定义方面的实现 - 不向公众开放| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |