routeEnhancer для плагина типа с другим номером параметра - PullRequest
0 голосов
/ 14 октября 2019

Мне нужна возможность пропустить один или несколько параметров в моих URL. Например:

domain.tld/page/my-article/
domain.tld/page/cat/2/my-article

оба URL показывают одну и ту же страницу.

Это работает для первого варианта:

myplugin:
  limitToPages:
    - 80
  type: Plugin
  routePath: '/{uid}'
  namespace: tx_myext_pi1
  requirements:
    uid: '[0-9]{1,4}'
  aspects:
    uid:
      type: PersistedAliasMapper
      tableName: tx_myext_items
      routeFieldName: slug

и это для второго:

myplugin:
  limitToPages:
    - 80
  type: Plugin
  routePath: '/cat/{cat}/{uid}'
  namespace: tx_myext_pi1
  requirements:
    cat '[0-9]{1}'
    uid: '[0-9]{1,4}'
  aspects:
    uid:
      type: PersistedAliasMapper
      tableName: tx_myext_items
      routeFieldName: slug
   cat:
     type: StaticRangeMapper
     start: '1'
     end: '10'

Но я не могу заставить их обоих работать ... Есть ливозможность определить усилитель маршрута, который позволяет игнорировать параметр cat?

Спасибо!

1 Ответ

0 голосов
/ 15 октября 2019

После нескольких часов попыток я нашел (очевидное) решение. На самом деле существует довольно много возможностей, если вы не возражаете против правильного порядка определений, который я не сделал.

Каждый routePath принадлежит отдельному усилителю маршрута с отдельным именем. Пути маршрута должны отличаться от начала строки:

это работает:

myplugin1:
routePath: '/{id}'
myplugin2:
'/u/{unit}/{id}'

this dont:

myplugin1:
routePath: '/{id}'
myplugin2:
'/{id}/u/{unit}'

потому что первый термин / {id}одинаково в обоих определениях.

(Пожалуйста, имейте в виду, что это часто очень плохая идея из-за дублированного контента! Иногда это не имеет значения ...)

...