Как создать динамический c строковый усилитель маршрута в TYPO3 CMS 9.5 LTS? - PullRequest
0 голосов
/ 06 января 2020

Я создал простой аспект для моего усилителя маршрута расширения, например:

routeEnhancers:
  Trainee:
    type: Extbase
    extension: Dsinstitution
    plugin: Dslisttrainees
    routes:
      - routePath: '/trainee/{trainee-identifier}'
        _controller: 'Trainee::show'
        _arguments:
          trainee-identifier: trainee
    defaultController: 'Trainee::list'
    aspects:
      trainee-identifier:
        type: PersistedPatternMapper
        tableName: 'tx_dsinstitution_domain_model_trainee'
        routeFieldPattern: '^(?<lastname>.+)-(?<prename>.+)-(?<uid>\d+)$'
        routeFieldResult: '{lastname}-{prename}-{uid}'

Проблема в том, что если кто-то с очень криптитным c именем разрушит ожидаемую структуру URL ( например, с & или / в нем). Для этого расширение news использует атрибут path_segment вместо нескольких полей.

Для этого я расширил свои ext_tables. sql этим атрибутом. Но как я могу заставить TCA автоматически заполнить его очищенной структурой "lastname - prename - uid"? Я не понимаю способ расширения news.

1 Ответ

0 голосов
/ 08 января 2020

Ответ: не надо!

В документации и в соответствии с рекомендациями нескольких разработчиков не следует использовать свободные текстовые поля в Persisted Pattern Mapper. Вместо этого вы используете slug для этого в вашем TCA.

Более подробно смотрите в документации: https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ColumnsConfig/Type/Slug.html

Добавление в TCA вашей модели что-то вроде:

'urlslug' => [
    'exclude' => true,
    'label' => 'urlslug',
    'config' => [
        'type' => 'slug',
        'generatorOptions' => [
            'fields' => ['lastname', 'prename', 'uid'],
            'fieldSeparator' => '-',
            'prefixParentPageSlug' => true
        ],
        'fallbackCharacter' => '-',
        'eval' => 'uniqueInSite',
        'default' => ''
    ]
]

Помните добавить urlslug к вашей модели и к ext_tables. sql вашего расширения. Также слагы будут генерироваться только на новых объектах, только созданных с TCA (бэкэнд).

...