这就是控制器上的分页工作方式
/**
*@Route("/rating/{page}",name="testing")
*/
public function pagesAction($page,Request $request)
{
// retrieve GET variables
$pageNumber = $request->query->get('pageNumber');
$pageSize = $request->query->get('pageSize');
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$results = $qb->add('select', 'p')
->add('from', 'GabrielUploadBundle:Post p')
->add('where', 'p.upvotes > 100')
->add('orderBy', 'p.createdAt ASC')
->setMaxResults($pageSize)
->setFirstResult($pageSize * ($pageNumber - 1))
->getQuery();
return $this->render('GabrielLayoutBundle:Worldpage:content_loop.html.twig',array('posts'=>$results->getResult()));
}
现在我只需要为URL传递pageNumber和pageSize(它到目前为止工作)
/评价/前PAGENUMBER = 1&安培;?的pageSize = 3
我需要知道的是如何显示这样的结果
我一直在努力完成这一步,因为我不知道如何计算结果数量以及如何让“下一个”和之前的按钮工作
答案 0 :(得分:3)
请查看 KnpLabs/KnpPaginatorBundle 。
这是 TOP 10% 最常用的捆绑包之一。
该软件包提供了可重写的default templates,用于呈现分页按钮,并且很容易集成到您的项目中。
如果您不想使用捆绑包......它的源代码绝对是寻找灵感的好地方。
您当前的实施缺少第二个前期查询来获取帖子的总数。
在不知道帖子总数的情况下......您将无法确定要显示的按钮数量。