升级到TYPO3 v9.5.14后的路由异常
升级到TYPO3 v9.5.14后,我们的新闻详细页面崩溃,但有一个例外 Symfony\Component\Routing\Exception\InvalidParameterException 路由“tx_news_pi1_1”的参数“p88bd715a41119d0e8087a5d19cb049”必须匹配“[^/]+”(“给定”)才能生成相应的URL 发生什么事了 站点使用了此配置:升级到TYPO3 v9.5.14后的路由异常,typo3,typo3-9.x,tx-news,symfony-routing,Typo3,Typo3 9.x,Tx News,Symfony Routing,升级到TYPO3 v9.5.14后,我们的新闻详细页面崩溃,但有一个例外 Symfony\Component\Routing\Exception\InvalidParameterException 路由“tx_news_pi1_1”的参数“p88bd715a41119d0e8087a5d19cb049”必须匹配“[^/]+”(“给定”)才能生成相应的URL 发生什么事了 站点使用了此配置: NewsTagPlugin: type: Extbase limitToPages:
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
首先,考虑
罪魁祸首是页面
方面的默认配置。
曾经引入它是为了确保第一个标记页面的URL始终为“/tag name”,并且只有后续页面具有“/tag name/page/2”等等
现在需要删除此默认值,以便根据需要应用需求。1)多余的映射
\u参数
定义路由参数和内部变量(例如作为查询参数)的映射`
要求
在这里是错误的,因为它不能用作参数映射
- 参数
要求
需要在NewsTagPlugin的根级别上定义
2) 无效的空默认值
默认值
在TYPO3 v9.5.14之前未应用,在
- 参数
页面
的空默认值没有多大意义,会导致类似/some tag/page/
的URL,从而导致答案中显示的错误消息
- 默认值应为
page:1
- 如果URL中应省略参数(例如具有
/some tag/page/
),则需要在路由路径中使用{!page}
明确定义该参数
工具书类
调整增强子配置
- (未经测试)因为
IntegerMapper
似乎是一个自定义方面实现-不可供公众使用
我在一些问题上持不同意见。问题中描述的设置在9.5.13中没有错误。页面的URL为/tag name//tag name/page/2/tag name/page/3这是有效的,要求设置将默认值设置为空字符串。您的示例假定page:1为默认值,这对于所需的URL是错误的。IntegerMapper
实际上是一个自定义映射器,它除了比core目前提供的更快之外,没有什么特别的功能。
NewsTagPlugin:
...
routes:
...
- routePath: '/{tag-name}/page/{page}'
_controller: 'News::list'
_arguments:
tag-name: 'overwriteDemand/tags'
page: '@widget_0/currentPage'
requirements:
page: '\d+'
NewsTagPlugin:
...
routes:
...
- routePath: '/{tag-name}/page/{page}'
...
defaults:
page: ''
aspects:
...
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