избавиться от chash в усилителе маршрута для плагина - PullRequest
0 голосов
/ 27 апреля 2019

Как можно избавиться от cHash-Parameter в расширении pi_based? В руководстве написано:

"В разделе требований точно указывается, какой тип параметра должен быть добавлен к этому маршруту в качестве регулярного выражения. Таким образом, он настраивается так, чтобы разрешать только целочисленные значения, например, для разбивки на страницы. Если требования слишком свободные, параметр подписи URL-адреса ( "cHash") добавляется в конец URL, который нельзя удалить. "

Но насколько строг строг? Моя конфигурация:

Lexikon:
  type: Plugin
  limitToPages: [2140]
  routePath: '/eintrag/{eintrag}/{buchstabe}'
  namespace: 'tx_mcflexikon_pi1'
  requirements:
    buchstabe: '[A-Z]{1}'
    eintrag: '[0-9]{1,4}'
  default:
    buchstabe: 'A'
    eintrag: '0'

Я не знаю, как определить более строгие правила, кроме этих: 1 буква и от 1 до 4 цифр.

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2019

Ну, через несколько часов я нашел обходной путь. Кажется, что определения в разделе section не очень важны для cHash-Handling. Гораздо важнее раздел аспектов. Если я определяю для каждого параметра аспект, cHash исчезает:

Lexikon:
  type: Plugin
  limitToPages: [2140]
  routePath: '/eintrag/{buchstabe}/{eintrag}'
  namespace: 'tx_mcflexikon_pi1'
  requirements:
    buchstabe: '[A-Z]{1}'
    eintrag: '[0-9]{1,4}'
  default:
    buchstabe: 'A'
    eintrag: '0'
  aspects:
    eintrag:
      type: PersistedAliasMapper
      tableName: 'tx_mcflexikon_daten'
      routeFieldName: 'slug'
    buchstabe:
      type: StaticValueMapper
      map:
        A: 'A'
        B: 'B'
        C: 'C'
        D: 'D'
        E: 'E'
        G: 'G'
        H: 'H'
        I: 'I'
        J: 'J'
        K: 'K'
        L: 'L'
        M: 'M'
        N: 'N'
        O: 'O'
        P: 'P'
        Q: 'Q'
        R: 'R'
        S: 'S'
        T: 'T'
        U: 'U'
        V: 'V'
        W: 'W'
        X: 'X'
        Y: 'Y'
        Z: 'Z'

Немного раздражает определять каждую букву, но я не нашел другой возможности; StaticRangeMapper и PersistedAliasMapper не работают в этом контексте.

Возможно, можно определить собственный картограф, который ничего не делает для того, чтобы обмануть систему. С другой стороны: это, очевидно, приведет к проблеме безопасности.

...