Как предотвратить отображение TYPO3 элементов head и body при выводе JSON? - PullRequest
0 голосов
/ 30 сентября 2019

В TYPO3 8.7 я пытаюсь сгенерировать JSON с использованием FLUID.

Я создал страницу с фиктивным содержимым и обновил свою конфигурацию TypoScript для всех страниц в папке.

Настройка TypoScript

[PIDinRootline = 10]
    page = PAGE
    page {
        typeNum = 0

        config {
            disableAllHeaderCode = 1
            disablePrefixComment = 1
            xhtml_cleaning = none
            admPanel = 0
            debug = 0
            metaCharset = utf-8
            additionalHeaders = Content-Type:text/json;charset=utf-8
        }
    }
[global]

Я также создал фиктивный файл JSON, чтобы протестировать вывод перед созданием фактического содержимого с использованием FLUID:

api.json

{
    "hello": "world"
}

Теперь, похоже, это работает нормально. Но вывод по-прежнему включает html - и body -элементы.

Визуализированный вывод:

<html>
    <head></head>
    <body>
        {"hello": "world"}
     </body>
</html>

Документация гласит :

Если вы хотите выводить JSON, RSS или аналогичные данные с помощью Fluid, вы должны написать соответствующий TypoScript, который передает рендеринг страницы в Extbase и Fluid соответственно. В противном случае TYPO3 всегда будет генерировать <head> - и <body> -секцию.

Но я не знаю, что на самом деле здесь делать. Как я могу заставить TYPO3 не отображать HTML-элементы для переноса?

Ответы [ 3 ]

0 голосов
/ 01 октября 2019

Чего вам не хватает, так это опечатки:

config.disableAllHeaderCode = 1

прочитайте руководство

так как вы хотите, чтобы на специальной странице вы могли использовать специальный шаблон опечаткидля этой страницы. Для типа страницы это немного сложнее, так как эта конфигурация будет работать на всех типах страницы.
Если вы хотите, чтобы некоторые config опции были только для специального типа страницы, вы можете добавить эту конфигурацию к типу страницы только так:

json = PAGE
json.config.disableAllHeaderCode = 1

Помните, что жидкость сложнее, если вы выводите структуру, отличную от HTML. Но это возможно! Обратите особое внимание на пробелы и скобки ({})

0 голосов
/ 02 октября 2019

Проблема была в новом синтаксисе в TYPO3 8 и новее. В более новых версиях additionalHeaders уже не просто TEXT, а array with numeric indices. Таким образом, чтобы установить правильный тип заголовка, вы должны использовать этот:

additionalHeaders.10.header = Content-Type:application/json;charset=utf-8
0 голосов
/ 30 сентября 2019

Когда вы переопределяете объект страницы, вы должны удалить все внутри него с помощью page >. Кроме того, Fluid - это шаблонизатор для HTML, я не знаю, подходит ли он для вывода в формате JSON.

Лучший способ:
Я бы предложил использовать отдельный объект, чем страницуи другой тип страницы:

[globalVar = GP:type = 133]
  jsonOutput = PAGE
  jsonOutput {
    typeNum = 133

    config {
      ...
    }
  }
[global]
...