TYPO3: использовать переменную Fluid в JavaScript? - PullRequest
0 голосов
/ 08 января 2019

Я написал расширение TYPO3 с шаблоном. Внутри этого шаблона у меня есть функция JavaScript между <script> тегами. Только сейчас я понял, что весь шаблон визуализируется с помощью Fluid (верно?). Следовательно, он должен что-то делать (или, скорее, не должен, потому что это javascript и не должен рассматриваться Fluid) с фигурными скобками (function (){...}) моей функции JavaScript внутри моих тегов <script>. Правильный? Похоже, это не так, поскольку мой код всегда работал. Мне интересно, почему это всегда работало? TYPO3 распознает теги сценария и игнорирует все, что внутри них? Кстати, это TYPO3 6.2.

Теперь более важный вопрос: как я могу получить доступ к ассоциативному массиву, который я назначил представлению через контроллер, внутри функции javascript, которая находится между моими тегами <script>? Я пробовал что-то вроде var x = {test_variable} внутри моей функции JavaScript, но это не работает. Это намек на то, что фигурные скобки внутри JavaScript не интерпретируются Fluid. Но я нашел источники, которые утверждают, что они есть. Однако фигурные скобки, похоже, игнорируются Fluid в моем случае. Что объясняет, почему мой JavaScript всегда работал. Я в замешательстве, потому что я не могу объяснить все эти вещи. В любом случае, как мне получить доступ к переменным, которые я назначил моему представлению в контроллере внутри моего JavaScript? Надеюсь, понятно, о чем я.

1 Ответ

0 голосов
/ 09 января 2019

Жидкость генерирует текст. Для Fluid нет разницы, генерируете ли вы XML, txt, HTML, Javascript или PHP.

Таким образом, вы можете использовать переменные Fluid везде. Но вы должны рассмотреть специальную обработку фигурных скобок для переменных в выводе, которая содержит фигурные скобки как простой вывод. Жидкость может испортить фигурную скобку, которая должна быть простым выводом в качестве ввода для переменной.
(Есть аналогичные проблемы, если вы генерируете многострочный JavaScript в Typoscript)

Не каждое использование фигурных скобок может быть идентифицировано однозначно.

Если переменная в вашем примере var x = {test_variable} содержит какой-то текст, вы пропустили ' или ", чтобы указать строку для javascript. Но это должно привести к ошибке синтаксиса JavaScript.
Если вы обнаружите {test_variable} буквально в своем javascript, вы, возможно, не определили переменную Fluid с именем test_variable. (проверить с помощью <f:debug>{_all}</f:debug>)

...