Необязательный аргумент в Extbase RouteEnhancer - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно добавить необязательный аргумент в URL записей новостей (собственное расширение).

Текущая конфигурация энхансера:

MyNewsSystem:
type: Extbase
extension: MyNewsSystem
plugin: News
routes:
  -
    _controller: 'News::show'
    routePath: '/detail/{news_title}'
    _arguments:
      news_title: selectedNewsItem
aspects:
  news_title:
    type: PersistedAliasMapper
    tableName: tx_mynewssystem_domain_model_news
    routeFieldName: path_segment

Это прекрасно работает и генерирует следующую схему URL: / detail / title-of-news /

Теперь мне нужно добавить необязательный параметр в конец URL: / detail / title-of-news /? hl = String + with + info Добавление этого параметра закончится в 404.

Есть ли возможность просто проигнорировать этот аргумент в моем routeenhancer? Или как мне поступить?

1 Ответ

1 голос
/ 12 марта 2020

Вы получаете 404 Not Found, потому что произошла ошибка cHa sh. Если вы сгенерируете ссылку через TYPO3 (например, с f:link или typolink) и ваша конфигурация маршрутизации верна, будет добавлен правильный ?cHash= -параметр.

Если ваш пользовательский параметр делает вообще не меняйте вывод HTML, вы можете добавить его к [FE][cacheHash][excludedParameters] (в «Установках для всей установки»). Имейте в виду, что это означает, что различные значения этого параметра будут все go для одной и той же записи кэша. Таким образом, если вам нужно что-то сделать с параметром, ваш единственный вариант - JavaScript.

Другой случай довольно распространен, но я добавлю все условия для этого случая:

Если вам нужно изменить вывод HTML в зависимости от этого параметра и ( вам абсолютно не нужны ?cHash или вы не можете заставить TYPO3 сгенерировать эту ссылку ) и вы не можете использовать PersistedAliasMapper (так как параметр является свободным текстом и не привязан ни к чему в базе данных) и вы не можете использовать другие картографы (например, StaticRangeMapper), ваш единственный вариант - написать собственный аспект.

Посмотрите здесь https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Routing/ExtendingRouting.html - в вашем случае я будет искать вдохновение в \TYPO3\CMS\Core\Routing\Aspect\StaticRangeMapper. Желательно максимально сузить возможные значения (чтобы предотвратить переполнение кэша, причина, по которой cHash был добавлен в TYPO3), но вы сможете избавиться от ?cHash.

* 1040. *

Просто для полноты: так и должно быть. В настоящее время существуют некоторые несоответствия между кэшированными и не кэшированными страницами и страницами с «расширенным маршрутом» (например, страницами с подробностями) и страницами «pagetree», независимо от того, выдан ли ошибка cHa sh. Но если вы относитесь к параметрам, подобным предлагаемым здесь, я думаю, вы в безопасности на будущее.

...