我尝试使用捆绑包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>提前进行Thx
发布于 2015-03-27 17:25:14
几乎正确,但是你必须使用分页对象而不是'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
https://stackoverflow.com/questions/29297045
复制相似问题