zoukankan      html  css  js  c++  java
  • Laravel —— 特殊分页

    项目中,分页经常会用到。

    Laravel 中也自带了分页功能。

    但有些时候需要稍作修改,来满足自己的需求。

    一、普通分页

    1、控制器中,用 paginate() 方法。

      $users = DB::table('users')->paginate(15);

      或简单分页

      $users = DB::table('users')->simplePaginate(15);

    2、blade 模板中,可直接用查询结果数据

      {{ $users->links() }}、{$users->render(}}

      分页自带了 bootstamp 样式

    3、自定义分页 URI

      $users->withPath('custom/url');

    4、附加参数到分页

      $users->appends(['sort' => 'votes'])->links()

    二、自定义分页

    1、自定义分页模板

      php artisan vendor:publish --tag=laravel-pagination

      会在 resources/views 目录下自动创建 pagination/ 目录

      会把自带分页中的模板 copy 在以上目录中。

    2、修改模板

      比如修改显示链接数,分页内容等。

    3、调用自定义模板

      $paginator->links('view.name')

      links 参数为模板路径

    三、集合中的分页

      很多时候查询结果需要用 Collection 处理后再分页,而 Laravel 中是不支持的。

      下面稍作修改,来实现上面的需求

    1、集合处理查询结果

    $users = DB::table('users')
                ->get()
                ->each(function($item, $key){
                    $item->total = 11;
                })->paginate(15);

      

      经过上面的处理后,会发现分页消失了。

    2、分页加入服务提供者中

      在 app/Providers/AppServiceProvider.php 文件,

      头部引入下面类

    use IlluminatePaginationPaginator;
    use IlluminatePaginationLengthAwarePaginator;
    use IlluminateSupportCollection;

      

      boot 方法中添加以下代码

      

    if (!Collection::hasMacro('paginate')) {
                Collection::macro('paginate', 
                    function ($perPage = 15, $page = null, $options = []) {
                        $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
                        return (new LengthAwarePaginator(
                            $this->forPage($page, $perPage), $this->count(), $perPage, $page, $options))
                        ->withPath('');
                    });
            }

    再去测试,发现分页又回来了。

  • 相关阅读:
    谢谢博客-园,让我不再有开源AYUI的想法
    [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果
    [AY技术分享]WPF AYUI的高大上日历代码
    [C#] AY.WPF-图形编程-高中生为起点-研究报告1
    [Aaronyang]谈谈2015年AY对WPF全面技术总结40多篇WPF,炫到没朋友的AYUI来了
    C#人爱学不学9[C#5.0异步实例+WPF自己的MVVM Async应用 1/12]
    Ay.Framework.WPF 2.0建立项目到底有多快
    [aaronyang]WPF4.5
    Hystrix是什么
    通俗理解ZooKeeper是如何保证数据一致性的
  • 原文地址:https://www.cnblogs.com/rendd/p/11617348.html
Copyright © 2011-2022 走看看