您的位置:首页 > 其它

symfony分页实现方法

2016-02-22 16:30 387 查看
前面仿照生成数据库实体,

一个分页让我无语了好长时间,找了各种资料,就是不知道怎么入门,官方文档又没有说,这里说一下吧!

好了言归正传:symfony分页是要用到组件的,symfony的核心就是善于使用别人的代码愉快的做一个程序员
所以这里使用KnpPaginatorBundle实现翻页

运行命令拉去组件

composer require "knplabs/knp-paginator-bundle"


下面是我运行的命令截图



这里大约要等十秒钟到5分钟左右看网速

拉取完成后,就需要到框架里面注册该组件在项目下的app/Resources/AppKernel.php里面注册



// app/AppKernel.php
class AppKernel  extends Kernel{
public functionregisterBundles() {
$bundles = [
new   Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),
];
}

}




再在控制器里面添加

class NewsController extends Controller
{
/**
* 2016-1-19
* auth:lsf
* 查询列表
* @param   int $page   页数
* @param   int $limit  显示条数
*/
public function indexAction($page,$limit){
$em = $this->getDoctrine()->getManager();
$qb = $em->getRepository('AppBundle:DemoList')->createQueryBuilder('u');
//Appbundle是你的模块DemoList是你的表实体 u是别名后面可接条件

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($qb, $page,$limit);

return $this->render('news/list.html.twig',['pagination' => $pagination]);
}
}

顺便贴一下路由地址做什么肯定要做全套,不然你们说我不厚道

在config文件夹下面的路由配置文件

routing.yml文件里面添加

news_page:
path: "/news/{page}/{limit}"
defaults: {_controller: AppBundle:News:index,page:1,limit:2}

不过这里不建议这样写,每页的条数肯定建议写配置文件里面,就不用这么麻烦了

再就是页面了

{#这是循环读取内容不用说了,肯定都晓得撒!#}
{% for value in pagination %}
{{value.title}}{#直接就是值了#}
{% endfor %}
{{ knp_pagination_render(pagination) }}
{#
这里是分页代码,是不是很简单呀!
#}

当然不建议我这么写,建议request,我这么写只是个人喜好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息