symfony分页实现方法

来源:互联网 发布:工业机器人软件平台 编辑:程序博客网 时间:2024/05/16 18:45

前面仿照生成数据库实体,

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

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

所以这里使用KnpPaginatorBundle实现翻页

运行命令拉去组件

composer require "knplabs/knp-paginator-bundle"

下面是我运行的命令截图

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

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


// app/AppKernel.phpclass 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,我这么写只是个人喜好

0 0
原创粉丝点击