landish/pagination

此包已被放弃,不再维护。未建议替代包。

Laravel 5 自定义分页显示器

1.3.3 2017-03-08 11:36 UTC

This package is not auto-updated.

Last update: 2022-10-29 06:55:58 UTC


README

注意:仅支持 5.05.15.2 版本。5.3 及以上版本将无法使用。欢迎提交PR!

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Laravel 5 内置 分页 类,其渲染效果与 Bootstrap 3 风格完美匹配。

此包允许您更改渲染的分页元素的前端框架显示输出,例如: Semantic UIZurb FoundationUIKitMaterialize

使用此包也非常容易创建自定义分页的HTML输出。

目录

安装

要安装 landish/pagination 包,您需要在您的终端或命令提示符中运行以下命令

$ composer require landish/pagination

或者手动在您的 composer.json 文件中添加以下行

"require": {
    "landish/pagination": "~1.0"
}

然后运行 composer updatecomposer 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() !!}

对于 Zurb Foundation

{!! (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 UIZurb FoundationUIKit

为了使用它,首先在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 = '&laquo;';

    /**
     * Next button text.
     *
     * @var string
     */
    protected $nextButtonText = '&raquo;';

    /***
     * "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许可证授权。