TYPO3 9.5 LTS routeEnhancers для новостей с uid, чтобы сделать путь уникальным - PullRequest
0 голосов
/ 07 декабря 2018

Здравствуйте, я нашел следующее на канале TYPO3 Slack как то, что использовал один человек.Этот фрагмент yaml существует в /config/my-websitename/config.yaml ...

routeEnhancers:
  NewsList:
    type: Extbase
    limitToPages: [2,20,21,22,92]
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/p{page}'
        _controller: 'News::list'
        _arguments: {'page': '@widget_0/currentPage'}
      - routePath: '/{news_title}'
        _controller: 'News::detail'
        _arguments: {'news_title': 'news'}
    defaultController: 'News::list'
    defaults:
      page: '0'
    requirements:
      page: '\d+'
      news_title: '^[a-zA-Z0-9].*$'
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'
      news_title:
        type: PersistedAliasMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldName: 'path_segment'

Проблема

Но я заметил, что когда у меня несколько статей с одинаковым названием, не существует уникального URL.

Вопрос

Как добавить к пути статью uid, чтобы сделать ее уникальной, или это хорошая идея?Я обнаружил, что в документах этого не было, но не знаю, как заставить его работать, чтобы расширить то, что у меня уже есть, или, если есть лучший пример, кто-нибудь может дать мне, как получать уникальные URL для новостей?

https://docs.typo3.org/typo3cms/extensions/core/latest/Changelog/9.5/Feature-86365-RoutingEnhancersAndAspects.html#persistedpatternmapper

1 Ответ

0 голосов
/ 18 декабря 2018

Ответ

routeEnhancers:
  NewsPlugin:
    type: Extbase
    extension: 'News'
    plugin: 'Pi1'
    routes:
      - { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
    defaultController: 'News::list'
    aspects:
      news_title:
        type: PersistedPatternMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldPattern: '^(?P<path_segment>.+)-(?P<uid>\d+)$'
        routeFieldResult: '{path_segment}-{uid}'
...