0

I'm trying to create a URL-structure like /maincategory/subcategory/ and this works, it looks good but with my code it loses the parameter "mwWsCategory2" and replaces it with the value under "defaults". In this example the Parameter "mwWsCategory2" will be empty in the extbase-controller but the url looks nice and correct.

I tried to remove "defaults" than I get the correct parameter and the url looks fine, but "mwWsCategory2" is optional, so /maincategory/ won't work - but I need that option.

So I also tried keeping the "defaults"-thing, but removing "categoryname2" under "aspects". Than it looks like /maincategory/2/ BUT I get the parameter. So it must be a combination between defaults and PersistedAliasMapper - I think. Maybe. I hope someone smarter than me has an answer. :)

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
Markenwirt
  • 31
  • 4

1 Answers1

1

Try this:

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

Under "_arguements" you are mapping routePath placeholders to an variable/aspect.

categoryname => mwWsCategory

But defining aspects using the placeholder name. Just use the mapped aspects/variablename, so the definition could be mapped in the chain.

Stefan Bürk
  • 524
  • 4
  • 8
  • Jep, that was the answer is was looking for. I don't fully get it, because my version is "the same" just with different variablenames but if TYPO3 want that, I can do that. Thanks a lot, I already checked your answer as the correct answer. :) – Markenwirt Apr 23 '20 at 09:44