#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
решило мою проблему, спасибо. Понятия не имею, почему я не попробовал это самостоятельно.