olegbolden/yii2-show-n-pages

类似于 DataTables 的下拉页面大小选择器

v2.2 2023-10-04 08:22 UTC

This package is auto-updated.

Last update: 2024-09-06 07:56:07 UTC


README

默认情况下,使用像 DetailView 这样的小部件创建的多页列表中,Yii2 没有页面大小选择器。这个扩展在不使用 jQuery 的情况下,添加了类似于流行的 JavaScript DataTables 风格的功能。

该扩展易于使用,且完全可定制,以适应您的页面布局。

兼容性

PHP version >=5.6
All modern browsers and IE.
Yii2 versions >=2.0.*

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

php composer.phar require --prefer-dist olegbolden/yii2-show-n-pages "*"

或者

"olegbolden/yii2-show-n-pages": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

  1. 第一步是为您的数据提供者指定此小部件提供的实际页面大小
$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'pagination' => [
        'pageSize' => PageSizeWidget::getPageSize([
            'section'   => 'statistics',
            'pageSizes' => [25, 50, 100],
        ]),
    ],
]);

'section' 参数指定对应小部件的标识符,因为您的网站上可能有多个地方有不同页面大小的小部件实例,它们有自己的页面设置,因此小部件需要这些标识符来区分它们。如果您只使用一个实例,则可以省略部分标识符,默认为 'main'。

'pageSizes' 参数指定自定义预定义页面大小的集合,如果您对对应数据提供者的默认页面大小不满意。默认为 [10, 25, 50, 100, All],也可以省略。如果您的数据集非常大,并且没有必要在一个页面上显示所有项目,则这非常有用。

  1. 现在您可以通过以下方式将小部件插入到您的视图代码中
<?= PageSizeWidget::widget($options); ?>

选项

以下列出了一些可用的数组选项

lang

语言设置

'lang' => [
    PageSizeWidget::LANG_SHOW    => 'Показать',
    PageSizeWidget::LANG_ENTRIES => 'записей',
    PageSizeWidget::LANG_ALL     => 'Все',
]

section

可选参数,用于区分您网站不同部分的widgets,并为每个设置独立的页面大小设置。

重要的是,这里指定的每个 'section' 必须与上面描述的对应数据提供者分页设置中的 'section' 相同。

'section' => 'statistics'

wrapperClass / innerClass

用于将小部件适配到您页面的样式类。

例如,指定的样式将为以下布局

'wrapperClass' => 'pull-right',
'innerClass' => 'pageSelector'

提供以下布局

<div class="pull-right">
    <span class="pageSelector">Show <select name="pageSize">
            <option value="10">10</option>
            ...
            <option value="1000000">All</option>
        </select> items</span>
</div>