Гибкая разбивка на страницы TYPO3 6.2 не работает должным образом

Моя TYPO3 6.2 (обновленная с TYPO3 4.5) плавная разбивка на страницы отображает все элементы вместо 5 элементов.

Мой метод репозитория:

public function getRandomLocation($iLimit)
{
    $query = $this->createQuery();
    $result = $query->statement("Select * FROM      tx_sfel_domain_model_ttblocationsproduktegruppen WHERE hidden = 0 AND deleted = 0 AND logo != '' ORDER BY uid LIMIT 0, ".$iLimit." ");
    return $result->execute(); 
}

Мой код контроллера:

$aSResultsLocations = $this->tTBLocationsProdukteGruppenRepository->getRandomLocation($iLimit);
$this->view->assign('aSResultsLocations', $aSResultsLocations);

Мой шаблон:

    <f:widget.paginate objects="{aSResultsLocations}" as="aSResultsLocationss" configuration="{itemsPerPage: 5, insertAbove: 1 insertBelow: 1}"> 

                <f:for each="{aSResultsLocationss}" as="aSResultsLocation">
                     .................

                     //Getting all the items instead of 5 items.

                </f:for>
    </f:widget.paginate> 

В TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\PaginateController.php indexaction() я получаю следующие результаты.

Код :

$itemsPerPage = (int)$this->configuration['itemsPerPage'];

$query = $this->objects->getQuery();
$query->setLimit($itemsPerPage);
if ($this->currentPage > 1) {
     $query->setOffset((int)($itemsPerPage * ($this->currentPage - 1)));
}
$modifiedObjects = $query->execute();

Значения, которые я получил отсюда:

$itemsPerPage : 5

$query : Select * FROM tx_sfel_domain_model_ttblocationsproduktegruppen WHERE hidden = 0 AND deleted = 0 AND (jahr = '13' OR jahr = '14' OR jahr = '15') AND logo != '' ORDER BY uid LIMIT 0, 26

Количество $modifiedObjects = 26

Но мне нужно '$modifiedObjects count' как 5.

Я думаю, что следующее не работает для моего объекта запроса,

$query->setLimit($itemsPerPage);
$query->setOffset((int)($itemsPerPage * ($this->currentPage - 1)));

Я думаю, что эта проблема связана с тем, что мой объект запроса используется в разбиении на страницы. Как создать объект запроса для разбивки на страницы TYPO3 6.2??

Пожалуйста помогите.


person Reshma Reghunatha Panicker    schedule 14.05.2015    source источник
comment
Вы не можете использовать оператор с paginate, потому что paginate изменит исходный оператор перед выполнением. Это можно сделать только в том случае, если это запрос, созданный с помощью построителя запросов.   -  person pgampe    schedule 15.05.2015
comment
Спасибо, Пгампе. Ваша подсказка мне очень помогает. Я перестроил свой запрос с помощью построителя запросов, и теперь он работает.   -  person Reshma Reghunatha Panicker    schedule 18.05.2015
comment
Привет всем, Чтобы исправить вышеуказанную проблему, я перестроил запрос в формате запроса extbase. В typo3 6.2.x разбиение на страницы не будет работать с оператором запроса, поэтому нам нужно преобразовать его в формат запроса extbase.   -  person Reshma Reghunatha Panicker    schedule 18.05.2015
comment
Пожалуйста, добавьте свой перестроенный запрос в качестве ответа вместо использования комментария.   -  person lorenz    schedule 18.05.2015


Ответы (1)


Чтобы исправить вышеуказанную проблему, я перестроил запрос в формате запроса extbase. В typo3 6.2.x разбиение на страницы не будет работать с оператором запроса, поэтому нам нужно преобразовать его в формат запроса extbase.

Мой перестроенный формат запроса:

$constraints = array(); 
$subConstraints = array(); 
$query = $this->createQuery(); 

foreach($PublicationYears as $year) 
     $subConstraints[] = $query->equals('jahr', $year); 

$constraints[] = $query->logicalOr($subConstraints); 

$constraints[] = $query->logicalNot( $query->equals('logo', '') ); 

$query->matching($query->logicalAnd($constraints)); 

$query->setLimit((integer)$iLimit); 

$Result = $query->execute();
person Reshma Reghunatha Panicker    schedule 19.05.2015