Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升级到TYPO3 v9.5.14后的路由异常_Typo3_Typo3 9.x_Tx News_Symfony Routing - Fatal编程技术网

升级到TYPO3 v9.5.14后的路由异常

升级到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:

升级到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
首先,考虑

罪魁祸首是
页面
方面的
默认配置。
曾经引入它是为了确保第一个标记页面的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