seblhaire/bootstrappaginator

Laravel 生成分页的库

1.3.1 2024-03-13 18:24 UTC

This package is auto-updated.

Last update: 2024-09-13 19:38:09 UTC


README

由 Sébastien L'haire 编写

一个使用 Bootstrap 4 或 5 CSS 框架生成分页的 Laravel 库。

此库提供了两种不同的分页器

  • 一个经典的分页器,包含页码和上一页、下一页按钮。 paginator image
  • 一个按字母排序的分页器,包含字母 paginator alpha image

两个分页器都可以在同一个页面中使用。

演示站点可在 此处 获得。

安装

  1. composer require seblhaire/bootstrappaginator

  2. 可选:使用 npm install bootstrap 安装 Bootstrap

  3. Composer 会自动将包与 Laravel 链接。但您仍然可以明确地在 config/app.php 中添加 provider 和 facade

  'providers' => [
    ...
      Seblhaire\BootstrapPaginator\BootstrapPaginatorServiceProvider::class,
      ...
    ],
    'aliases' => [
        ...
        'BootstrapPaginator' => Seblhaire\BootstrapPaginator\BootstrapPaginator::class,
      ]
  1. 发布包(可选)。
$ php artisan vendor:publish
  1. 将翻译添加到 Laravel 现有的 pagination.php 翻译文件中,位于目录 resources/lang/en/。只需添加键
'all' => 'All',

用法

在控制器头部声明 Facade

 use Seblhaire\BootstrapPaginator\BootstrapPaginator;

您的路由必须在最后一段包含页面参数

Route::get('/issues/{page?}', 'MainController@issues')->name('issues');

例如:您可以有一个路由 https://test.site/issues/9,路由 https://test.site/issues 应显示第一页。控制器方法可以声明如下

function issues($page = 1){ ...}

如果您包含字母分页器,最后一段将是字母初始

Route::get('/authors/{initial?}', 'MainController@authors')->name('authors');

例如:您可以有一个路由 https://test.site/authors/D 会显示所有以 D 开头的作者。 https://test.site/authors 将显示所有项目。控制器方法可以声明如下

public function authors($initial = config('bootstrappaginator.valueforall')){ ... }

您可以在一个页面上结合使用两种分页器。在这种情况下,初始字母将在倒数第二个位置,页面参数在最后一个位置

Route::get('/authors/{initial?}/{page?}', 'MainController@authors')->name('authors');

在这种情况下 https://test.site/authors 显示所有项目的第一页。 https://test.site/authors/all/3 将显示所有项目的第三页。 https://test.site/authors/D 将显示以 D 开头的项目的第一页。而 https://test.site/authors/D/3 将显示以 D 开头的项目的第三页。使用默认参数初始化您的函数并在代码中使用它们

public function authors($initial = null, $page =1){
  ....
   $initial = is_null($initial) ? config('bootstrappaginator.valueforall') : $initial;
   $route = 'authors';
   $options = ['nbpages' => 4, 'params' => ['initial' => $initial]];
   $optionalpha = ['type' => 'alpha'];
   $paginator = BootstrapPaginator::init($page, $route, $options);
   $paginatoralpha = BootstrapPaginator::init($initiale, $route, $optionalpha);
   ....
   return view('pages.authors', [
       ...
       'paginator' => $paginator,
       'paginatoralpha' => $paginatoralpha,
       ...
  ]);
}

在这个例子中,数字分页器将在链接 URL 中包含当前初始字母。字母分页器的链接将引导网页用户到包含初始字母的第一页。然后,在视图中,按如下方式打印您的分页器

{!! $paginator->render() !!}

或简单地

{!! $paginator !!}

参数

  • $page:当前页码或初始字母;
  • $route:当前路由 ID;
  • $options:要替换配置文件中默认值的值的数组
    • type:要么是 numeric 要么是 alpha
    • params:默认 []。由 route() 助手使用的参数数组,用于在分页器中生成 URL。请参见上面的示例;
    • getparams:默认 []。将被添加到路径中的 GET 参数。例如:['search' => 'dummy', 'type' => 'global'] 将被转换为 url?search=dummy&type=global
    • 数字分页器特定参数
      • pageparam : 默认 page。路由中页面参数的ID。
      • nbpages:默认 1。将要显示的页面数量。
      • withoutdots:默认 false。显示所有页面,不使用点号分隔空白区域;
      • max_pages_without_dots:默认 9。不使用点号分隔的最大页面数。
      • items_before_after_current:默认 2。显示当前页面项前后要显示的页面数。
    • alpha 分页器特定参数
      • initialparam:默认 initial。路由中初始参数的ID;
      • valueforall:默认 all。用于显示所有项目而不是以特定参数开始的项目所用的值。
    • class:默认 pagination justify-content-center。包围分页的 <ul> 的类。
    • itemclass:默认 page-item<li> 元素的类。
    • linkclass:默认 page-link<a> 元素的类。
    • activelink:默认 active。添加到当前元素的类。
    • disabledlink:默认 disabled。禁用按钮的类。
    • srcurrent 默认: <span class="sr-only">(current)</span> - 添加到当前元素用于语音辅助工具的元素。
    • previousbuttoncontent:默认 <span aria-hidden=\"true\">&laquo;</span>。上一页按钮的内容。
    • nextbuttoncontent:默认 <span aria-hidden=\"true\">&raquo;</span>。下一页按钮的内容。

配置文件

配置文件可在包目录 vendor\seblhaire/bootstrappaginator 中找到,或者在你发布配置的 app 配置目录中。

config('bootstrappaginator')

有问题?有贡献?

请随时向作者发送功能请求或合并请求,或简单地提问。