TYPO3 (6.2) и extbase: добавить элементы в QueryResult

У меня есть список событий, и мне нужно показать первые 5 событий определенной категории на странице 1, а затем показать все события (включая первые 5 из категории X) на следующих страницах.

Итак, я попытался создать 2 запроса extbase для моих результатов и попытался объединить их 2. Но с toArray или ObjectStorage я получаю что-то вроде следующей ошибки в моем шаблоне разбивки на страницы:

Аргумент 1, переданный в TYPO3 \ CMS \ Fluid \ ViewHelpers \ Widget \ PaginateViewHelper :: render (), должен реализовывать интерфейс TYPO3 \ CMS \ Extbase \ Persistence \ QueryResultInterface, экземпляр TYPO3 \ CMS \ Extbase \ Persistence \ ObjectStorage задан

Итак, как я могу объединить 2 QueryResults, не конвертируя их во что-то еще? Или есть другой способ добиться того, чего мне нужно достичь?

Небольшой пример того, как мне это нужно:

page 1 (the first 5 Events in Category X): 
    Event 4, Category X
    Event 5, Category X
    Event 8, Category X 
    Event 9, Category X
    Event 10, Category X 
page 2 (from now on everything is sorted by ID): 
    Event 1, Category A
    Event 2, Category B
    Event 3, Category B
    Event 4, Category X
    Evnet 5, Category X
page 3: 
    Event 6, Category A
    Event 7, Category B
    Event 8, Category X
    Event 9, Category X
    Event 10, Category X

используя f: widget.paginate в моем шаблоне.


person Chi    schedule 30.03.2016    source источник


Ответы (1)


Во-первых, концепция разбиения на страницы здесь не применима при переходе со страницы 1 на страницу 2. Что ожидал бы пользователь? Определенно не повторяющиеся результаты?

Более конкретно: только начиная с TYPO3 7.6 PaginationViewHelper поддерживает массивы в дополнение к QueryResults. Но есть бэкпорт (я использовал его с 6.2).

Чтобы решить вашу проблему, почему бы не использовать отдельные запросы с отдельными страницами, поскольку ваши элементы контента имеют семантически различное назначение? При использовании настраиваемого WidgetController вы можете настроить QueryResult в соответствии с вашими целями в произвольных условиях, таких как определенная страница (это то, для чего он предназначен), если вы действительно должны, но я бы не советовал этого делать.

person sven    schedule 31.03.2016
comment
к сожалению, этого хочет заказчик, не в моих силах это изменить. - person Chi; 31.03.2016
comment
см. здесь: \TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\PaginateController. Вы можете расширить это и перезаписать логику indexAction тем, что хочет заказчик. При этом я считаю, что ни один клиент не хочет запутанного UX? - person sven; 31.03.2016