Элементы сетки и гибкие формы: доступ к значениям гибкой формы с помощью коротких виртуальных имен

#typo3 #typo3-9.x #tx-gridelements

#typo3 #typo3-9.x #tx-элементы сетки

Вопрос:

У меня есть элемент сетки, объединенный с гибкой формой для некоторой конфигурации, и я не могу прочитать заданное значение гибкой формы с помощью «flexform_fieldname»

Система / версии:

  • TYPO3 9.5
  • Элементы сетки 9.2

Настройка элемента сетки:

 pageStripe {
  frame = 3
  config {
    colCount = 1
    rowCount = 1
    rows {
      1 {
        columns {
          1 {
            name = Title
              colPos = 10
          }
        }
      }
    }
  }
  flexformDS = FILE:EXT:path/to/PageStripe.xml
}
 

Структура гибкой формы:

 <bgcolor type="array">
  <TCEforms>
    <label>Label</label>
    <config>
      <type>select</type>
      <items type="array">
        <numIndex index="0" type="array">
          <numIndex index="0">Default (no background color)</numIndex>
          <numIndex index="1">default</numIndex>
        </numIndex>
      </items>
    </config>
  </TCEforms>
</bgcolor>
 

Жидкий вывод в HTML-макете моего элемента сетки:

 <f:debug>{flexform_bgcolor}</f:debug> // output = NULL
<f:debug>{data.flexform_bgcolor}</f:debug> // output = NULL
<f:debug>{data.pi_flexform.data.general.lDEF.bgcolor.vDEF}</f:debug> // output = correct value
 

Вопрос: Это неправильная настройка в моем коде или ошибка в последней версии gridelements, что значения гибкой формы не могут быть прочитаны короткими виртуальными именами (flexform_bgcolor вместо data.pi_flexform.data.general.lDEF.bgcolor.vDEF), даже если для «resolveFlexFormData» установлено значение 1?

Ответ №1:

Это не ошибка и не неправильная настройка, но при включенной обработке данных вы должны находиться в пределах FLUIDTEMPLATE. Таким образом, нет необходимости указывать значения гибкой формы в виртуальных полях, поскольку вы можете получить доступ к ключам массива непосредственно из Fluid, что невозможно из TypoScript.

Таким образом, статический файл шаблона TypoScript «старой школы», который использует uf userFunc, по-прежнему предоставляет эти поля, в то время как новый и рекомендуемый статический — нет.