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, вы не сможете сравнить его с текущим значением.