landish / pagination
Laravel 5 自定义分页显示器
Requires (Dev)
- illuminate/pagination: 5.2.*
- phpunit/phpunit: ~6.0
README
注意:仅支持 5.0、5.1 和 5.2 版本。5.3 及以上版本将无法使用。欢迎提交PR!
Laravel 5 内置 分页 类,其渲染效果与 Bootstrap 3 风格完美匹配。
此包允许您更改渲染的分页元素的前端框架显示输出,例如: Semantic UI、Zurb Foundation、UIKit 和 Materialize。
使用此包也非常容易创建自定义分页的HTML输出。
目录
安装
要安装 landish/pagination
包,您需要在您的终端或命令提示符中运行以下命令
$ composer require landish/pagination
或者手动在您的 composer.json
文件中添加以下行
"require": { "landish/pagination": "~1.0" }
然后运行 composer update
或 composer install
命令。
用法
在您的 *.blade.php
文件中添加以下代码,您想要显示分页的地方
对于 Semantic UI
{!! (new Landish\Pagination\SemanticUI($items))->render() !!} // or add "\Simple" in namespace for "Simple Pagination" {!! (new Landish\Pagination\Simple\SemanticUI($items))->render() !!}
{!! (new Landish\Pagination\ZurbFoundation($items))->render() !!} // or add "\Simple" in namespace for "Simple Pagination" {!! (new Landish\Pagination\Simple\ZurbFoundation($items))->render() !!}
对于 UIKit
{!! (new Landish\Pagination\UIKit($items))->render() !!} // or add "\Simple" in namespace for "Simple Pagination" {!! (new Landish\Pagination\Simple\UIKit($items))->render() !!}
对于 Materialize(由 @arandilopez 贡献)
{!! (new Landish\Pagination\Materialize($items))->render() !!} // or add "\Simple" in namespace for "Simple Pagination" {!! (new Landish\Pagination\Simple\Materialize($items))->render() !!}
用法 - 推荐方式
如果您在Web应用程序的多个页面上显示分页,并且需要在多个文件中写入输出代码,那么我会推荐这样做
只需在您的 /app/
目录中创建一个 Pagination.php
文件,并粘贴以下代码
注意:此示例适用于您尚未更改 Laravel 应用程序命名空间 的情况,否则请使用您自定义的命名空间而不是
App
。
<?php namespace App; use Landish\Pagination\SemanticUI; // Uncomment bellow line, if you like to use "Simple Pagination" // use Landish\Pagination\Simple\SemanticUI; class Pagination extends SemanticUI { }
在这种情况下,您只需在您的blade模板文件中添加以下代码
{!! (new App\Pagination($items))->render() !!}
将来,如果您决定覆盖分页元素的输出,则可以在 app/Pagination.php
文件中轻松更改,而不是在多个blade模板文件中。
简单分页
Laravel提供了创建“简单分页”的能力,这将只有上一页
和下一页
按钮,类似于Bootstrap所具有的。
landish/pagination
包支持这种分页方式,适用于Semantic UI、Zurb Foundation和UIKit。
为了使用它,首先在Eloquent Model上调用simplePaginate()
方法。
$items = User::where('votes', '>', 100)->simplePaginate(15);
然后,在显示分页输出时,在命名空间中添加\Simple
后缀。例如:
{!! (new Landish\Pagination\Simple\ZurbFoundation($items))->render() !!}
额外的包装器
如果您需要向分页输出添加额外的包装器,这些包装器仅在存在分页时显示,则可以这样做:
@if($items->hasPages()) <div class="pagination-wrapper"> <div class="pagination-wrapper-inner"> {!! (new App\Pagination($items))->render() !!} </div> </div> @endif
当然,您可以自由更改.pagination-wrapper
和.pagination-wrapper-inner
CSS类和HTML。
附加到分页链接
附加到分页链接允许您向分页链接添加额外的查询字符串。
使用此包,您可以按照以下代码行进行操作:
{!! $items->appends(['key' => 'value'])->render(new App\Pagination($items)) !!}
创建自定义分页
创建自定义分页或扩展landish/pagination
包非常简单。
Landish\Pagination\PaginationHTML
类包含以下属性:
<?php namespace Landish\Pagination; class PaginationHTML { /** * Pagination wrapper HTML. * * @var string */ protected $paginationWrapper = '<ul class="pagination">%s %s %s</ul>'; /** * Available page wrapper HTML. * * @var string */ protected $availablePageWrapper = '<li><a href="%s">%s</a></li>'; /** * Get active page wrapper HTML. * * @var string */ protected $activePageWrapper = '<li class="active"><span>%s</span></li>'; /** * Get disabled page wrapper HTML. * * @var string */ protected $disabledPageWrapper = '<li class="disabled"><span>%s</span></li>'; /** * Previous button text. * * @var string */ protected $previousButtonText = '«'; /** * Next button text. * * @var string */ protected $nextButtonText = '»'; /*** * "Dots" text. * * @var string */ protected $dotsText = '...'; ... }
简单地扩展您的app/Pagination.php
文件中的Landish\Pagination\Pagination
类,就像我上面推荐
的那样,并覆盖这些属性
<?php namespace App; use Landish\Pagination\Pagination as BasePagination; class Pagination extends BasePagination { /** * Pagination wrapper HTML. * * @var string */ protected $paginationWrapper = '<ol class="pagination-extended-css-class">%s %s %s</ol>'; ... }
然后,只需在您的blade模板文件中放置以下代码。
{!! (new App\Pagination($items))->render() !!}
许可
Landish/Pagination包是开源软件,根据MIT许可证授权。