Создать страницу с помощью KnpPaginator

0

Я попытался создать разбивку на страницы на своем веб-сайте, используя пакет KnpPaginator. В моем репозитории я создаю запрос:

public function getProductsOrderByDateDesc($id_category = null, $max = null){
    $qb = $this->createQueryBuilder('p')
        ->orderBy('p.created_at', 'DESC');

    if($max) {
        $qb->setMaxResults($max);
    }
    if($id_category) {
        if(is_array($id_category)){
            $aIdCategory = implode("','",$id_category);
            $qb->andWhere('p.category IN (:ids)')
                ->setParameter('ids', $aIdCategory);
        }else{
            $qb->andWhere('p.category = :category_id')
                ->setParameter('category_id', $id_category);
        }
    }
    $query = $qb->getQuery();
    return $query->getArrayResult();
}

В моем контроллере я делаю:

    $repositoryProduct = $em->getRepository('ShopDesktopBundle:Product');
    $aProducts          = array();
    $aProducts          = $repositoryProduct->getProductsOrderByDateDesc($id);
    $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $aProducts,
        $this->get('request')->query->get('page', 1),
        3
    );
    return $this->render('ShopDesktopBundle:Category:category.html.twig',array(
        'aProducts'         => $aProducts,
        'pagination'        => $pagination
    ));

Я вижу только эту разбивку на страницы:

<div class="navigation">
     {{ knp_pagination_render(pagination) }}
</div>

Проблема заключается в том, что всегда отображает все продукты не только для того, кто для моего примера равен 3. Например: у меня есть 9 продуктов, limit = 3, правильная разбивка на страницы "1 2 3", но для каждой страницы я вижу все 9 продуктов Справка Я пожалуйста ! спасибо заранее

Теги:
pagination
symfony-2.1
knppaginator

1 ответ

0

Почти правильно, однако вы должны использовать объект разбиения на страницы вместо "aProducts". На ваш взгляд, используйте следующий код:

{% for product in pagination %}
<tr {% if loop.index is odd %}class="color"{% endif %}>
    <td>{{ product.id }}</td>
    <td>{{ product.title }}</td>
</tr>
{% endfor %}

См. Дополнительную информацию в документации в разделе "Просмотр": https://github.com/KnpLabs/KnpPaginatorBundle

  • 0
    Теперь нумерация страниц не работает. Всегда оставаться на странице = 1
  • 0
    Пожалуйста, внимательно прочитайте документацию, в разделе «Контроллер» приведен полный пример, в котором говорится, что вы должны использовать объект «Запрос», чтобы на самом деле работала пагинация: $request->query->get('page', 1)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню