Flow3-Fluid повторяет объект, сгруппированный по свойству

У меня есть список объектов (элементов вопросов), каждый из которых имеет свойство с именем категории и заголовком. (Список объектов упорядочен по свойству категории)

С помощью этого гибкого шаблона я хочу перебрать элементы вопроса:

<f:for each="{questions}" as="question">
   <!-- every time category changes, display it as a new headline ??? -->
   <!-- if (question.category != previousQuestion.category) ?.....? -->
   <span>{question.title}</span>
</f:for>

Как я могу проверить, изменилось ли свойство категории в for? Вывод должен быть примерно таким:

  • Category-A
    • Question
    • Вопрос
  • Category-B
    • Question
  • Category-C
    • Question
    • Вопрос
    • Вопрос
    • ...

person Sascha Void    schedule 03.08.2014    source источник


Ответы (1)


Вы ищете f:groupedFor viewhelper: http://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/GroupedFor.html

<f:groupedFor each="{questions}" as="categoryQuestion" groupBy="category" groupKey="category">
    <h2>{category}</h2>
    <f:for each="{categoryQuestion}" as="question">
        <span>{question.title}</span>
    </f:for>
</f:groupedFor>

Ваш подход с помощью <f:if> viewhelper не будет работать, потому что в жидкости нет реальных переменных-шаблонов, только «константы» с областью видимости xml, поэтому, даже если вы определите предыдущий вопрос через <f:alias> viewhelper, вы не сможете его сравнить к текущему значению.

person hnesk    schedule 04.08.2014