【问题标题】:TYPO3: correct slug generation for detail-viewTYPO3:为详细视图正确生成 slug
【发布时间】:2021-02-09 16:35:18
【问题描述】:

我的 fe_users 增强扩展有这个配置:

routeEnhancers:
  PhonebookPlugin:
    type: Extbase
    limitToPages:
      - 21
      - 666
    extension: Phonebook
    plugin: tx_phonebook_phonebook
    routes:
      -
        routePath: '/seite/{page}'
        _controller: 'PhonebookItem::list'
        _arguments:
          page: '@widget_0/currentPage'
      -
        routePath: '/detail/{user}'
        _controller: 'PhonebookItem::show'
        _arguments:
          user: 'phonebookItem'
    defaultController: 'PhonebookItem::list'
    defaults:
      page: '0'
    requirements:
      page: '\d+'

但不是像 https:/domain.tld/telefonbuch/seite/7https:/domain.tld/telefonbuch/detail/123 这样的 URL
列表分页链接的 URL 如下所示:
https://domain.tld/telefonbuch?tx_phonebook_phonebook[%40widget_0][currentPage]=7&cHash=0c9036d3c9c4b72d334bb12a8dc2eb74
详情查看:
https://domain.tld/telefonbuch?tx_phonebook_phonebook%5Baction%5D=show&tx_phonebook_phonebook%5Bcontroller%5D=PhonebookItem&tx_phonebook_phonebook%5Bpage%5D=7&tx_phonebook_phonebook%5BphonebookItem%5D=123&cHash=7cc4e3152cd658e7ee209b05d1bedfab

什么配置丢失或错误?

【问题讨论】:

    标签: typo3 slug typo3-9.x


    【解决方案1】:

    首先,除非您没有故意将插件命名为tx_phonebook_phonebook,否则该值是错误的。应该是电话簿。

    一般来说,您缺少方面。你的{variables} 没有定义。

    aspects:    
       page:
          type: StaticRangeMapper
          start: '1'
          end: '100'
       user:
          type: PersistedPatternMapper
          tableName: fe_users
          routeFieldPattern: '^(?P<username>.+)'
          routeFieldResult: '{username}'
    

    您将不得不使用表格列。您应该注意空格、特殊字符大写字母等。您可以随时在 fe_users 上添加一个 slug 字段并添加您自己的配置。

    【讨论】:

    • 这是插件名称。我把tt_content.list_type的条目误认为是插件名称。更正为Phonebook 后,URL 符合预期。没有方面。这会很复杂,因为我不知道有一天会有多少记录。而且我不使用“用户名”,而是使用uid 作为索引(username 应该是秘密的)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2014-12-08
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多