TYPO3 9 Routing - 参数被默认值覆盖

TYPO3 9 Routing - the parameter gets overwritten by the defaults

我正在尝试创建一个像 /maincategory/subcategory/ 这样的 URL 结构,这很有效,它看起来不错,但在我的代码中它丢失了参数 "mwWsCategory2" 并将其替换为"defaults" 下的值。在此示例中,参数 "mwWsCategory2" 在 extbase-controller 中将为空,但 url 看起来不错且正确。

我尝试删除 "defaults" 然后我得到了正确的参数并且 url 看起来不错,但是 "mwWsCategory2" 是可选的,所以 /maincategory/ 不起作用 - 但我需要那个选项。

所以我也尝试保留 "defaults"-thing,但删除 "aspects" 下的 "categoryname2"。看起来像 /maincategory/2/ 但我得到了参数。所以它必须是默认值和 PersistedAliasMapper 之间的组合 - 我认为。也许。我希望比我聪明的人有答案。 :)

routeEnhancers:
  Werbemittelshop:
    type: Extbase
    extension: Mwwerbemittelshop
    plugin: Mwwerbemittelshop
    routes:
      - routePath: '/{categoryname}/{categoryname2}'
        _controller: 'MwWsCategories::category'
        _arguments:
          categoryname: 'mwWsCategory'
          categoryname2: 'mwWsCategory2'
    defaults:
      categoryname2: ''
    defaultController: 'MwWsCategories::category'
    aspects:
      categoryname:
        type: PersistedAliasMapper
        tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
        routeFieldName: slug
      categoryname2:
        type: PersistedAliasMapper
        tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
        routeFieldName: slug

试试这个:

routeEnhancers:
  Werbemittelshop:
    type: Extbase
    extension: Mwwerbemittelshop
    plugin: Mwwerbemittelshop
    routes:
      - routePath: '/{categoryname}/{categoryname2}'
        _controller: 'MwWsCategories::category'
        _arguments:
          categoryname: mwWsCategory
          categoryname2: mwWsCategory2
    defaults:
      categoryname2: ''
    defaultController: 'MwWsCategories::category'
    aspects:
      mwWsCategory:
        type: PersistedAliasMapper
        tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
        routeFieldName: slug
      mwWsCategory2:
        type: PersistedAliasMapper
        tableName: tx_mwwerbemittelshop_domain_model_mwwscategories
        routeFieldName: slug

在“_arguements”下,您正在将 routePath 占位符映射到 variable/aspect。

类别名称 => mwWs类别

但使用占位符名称定义方面。只需使用映射的 aspects/variablename,这样定义就可以映射到链中。