首页 > 解决方案 > 如何为简单的 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):

等等。这可以按预期工作,但我希望有更好的 URL。

我的 routeEnhancers 尝试重写 URL:

routeEnhancers:
  PageBrowser:
    type: Simple
    routePath: '/page/{page_number}'
    requirements:
      page_number: '[0-9]'
    _arguments:
      page_number: 'pageNumber'

此 routeEnhancer 的结果:

似乎编码有效,但解码失败。我究竟做错了什么?

标签: typo3typo3-9.x

解决方案


看起来 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]+'

推荐阅读