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

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

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

<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? Вывод должен быть примерно таким:

  • Категория-A
    • Вопрос
    • Вопрос
  • Категория-B
    • Вопрос
  • Категория-C
    • Вопрос
    • Вопрос
    • Вопрос
    • ...

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-области, поэтому даже если вы определяете previousQuestion через <f:alias> viewhelper, вы не сможете сравнить его с текущим значением.

Другие вопросы по тегам