Действие TYPO3 Fluid uri игнорирует параметры?

#ajax #typo3 #fluid

#ajax #typo3 #fluid

Вопрос:

У меня есть этот встроенный вызов fluid:

 {f:uri.action(pageUid: 102, action: 'getFile', noCacheHash: true, additionalParams: {id: 102})}
  

Однако, похоже, что параметры «pageUid», «noCacheHash» и «additionalParams» игнорируются, поскольку результирующий URL выглядит следующим образом:

 http://www.example.com/excontroller/?no_cache=1amp;tx_excontroller_bmbf%5Baction]=getFileamp;tx_excontroller_bmbf%5Bcontroller]=excontrolleramp;cHash=cec99a845beead4fe9f3863494abf1c7
  

Поскольку это вызов ajax, я бы просто отключил cHash. Или, по крайней мере, передайте идентификатор страницы, чтобы я не получал ошибку «вычисление кэша».

Итак, я что-то упускаю? Почему параметры не применяются?

Ответ №1:

Что касается noCacheHash: true , я думаю, что fluid интерпретирует true, как если бы это была переменная. Попробуйте noCacheHash: 1 вместо этого.

Что касается additionalParams параметров, которые не имеют префикса. Если вы хотите, чтобы они имели префикс так же, как и действие, используйте arguments .

Редактировать: удален плохой совет из ответа. Спасибо, Клаус.

Комментарии:

1. Извините, что я вмешиваюсь, но что касается рекомендации заключать массив в одинарные кавычки, я настоятельно не советую этого делать. Подробное обоснование можно найти в vimeo.com/167666466 но короче говоря: это начнет становиться неподдерживаемым вариантом использования и больше не обрабатывается в Fluid standalone. Другая рекомендация использовать 1 , а не true является абсолютно правильной и совершенно обязательной. Оно рассматривается как ссылка на переменную, которая содержит null значение as и которая false при приведении выдает логическое значение, вопреки намерению.

2. Спасибо, Клаус, за комментарий. Это означает, что {f:uri.action(arguments: {id: 102})} это правильно? Честно говоря, я ничего из этого не тестировал 🙂

3. {f:uri.action(arguments: {id: 102})} правильный синтаксис, но не забывайте, что у этого конкретного ViewHelper есть обязательный action аргумент, поэтому, возможно, вы захотите добавить фиктивный аргумент, чтобы сделать его правильным синтаксисом и правильным использованием 😉

4. Изменение noCacheHash на 1 решило мою проблему, спасибо. Понятия не имею, почему я не попробовал это самостоятельно.