i4erkasov/yii2-drop-down-list-sorter

Yii2 下拉列表排序器

1.0 2023-04-20 18:32 UTC

This package is auto-updated.

Last update: 2024-09-20 21:57:47 UTC


README

Latest Stable Version Total Downloads License

使用 Yii2 小部件通过下拉列表对 ActiveDataProvider 数据进行排序。

安装

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

运行以下命令

php composer.phar require --prefer-dist i4erkasov/yii2-drop-down-list-sorter "*"

或者在您的 composer.json 文件的 require 部分添加以下内容

"i4erkasov/yii2-drop-down-list-sorter": "*"

用法

扩展安装后,只需在您的代码中使用它即可

将排序添加到我们的 ActiveDataProvider:

$dataProvider = new yii\data\ActiveDataProvider([
            'query'      => $query,
            'pagination' => [
                'pageSize'      => 32,
                'route'         => '/catalog/',
                'pageSizeParam' => false,
            ],
            'sort'       => new \i4erkasov\dropdownlistsorter\data\Sort([
                'route'        => '/catalog/',
                'unsetParams'  => ['page', '_pjax'],
                'attributes'   => [
                    'index' => [
                        'asc'   => ['sort_index' => SORT_ASC],
                        'desc'  => false,
                        'label' => ['asc' => Yii::t('app', 'default')],
                    ],
                    'name'  => [
                        'asc'   => ['name' => SORT_ASC],
                        'desc'  => false,
                        'label' => ['asc' => Yii::t('app', 'by name')],
                    ],
                    'price' => [
                        'asc'   => ['price' => SORT_ASC],
                        'desc'  => ['price' => SORT_DESC],
                        'label' => [
                            'asc'  => Yii::t('app', 'price asc'),
                            'desc' => Yii::t('app', 'price desc'),
                        ],
                    ],
                ],
                'defaultOrder' => [
                    'index' => SORT_ASC,
                ],
            ]),
        ]);

参数集与标准的 Yii2 排序 相同

对于独占

默认排序参数是必需的。并且添加了 unsetParams 参数以排除 GET 参数,如上例中生成排序 URL 时所示。

示例

'unsetParams'  => ['page', '_pjax'],

php 示例

echo \i4erkasov\dropdownlistsorter\widget\DropDownSorter::widget([
    'sort'       => $dataProvider->sort,
    'class'      => 'filter-select__select',
    'onchange'   => '$.pjax.reload({container: "#pjax-catalog", url: $(this).val()})',
    'attributes' => [
        'index',
        'name',
        'price',
    ],
]);

yii2-twig 示例

{{ use('i4erkasov/dropdownlistsorter/widget/DropDownSorter') }}
{{ use('yii/widgets/Pjax') }}

{{ dropDownSorter_widget({
    'sort': dataProvider.sort,
    'options': {
        'class': 'filter-select__select',
        'onchange': '$.pjax.reload({container: "#pjax-catalog", url: $(this).val()})',
    },
    'attributes': [
        'index',
        'name',
        'price'
    ]
}) | raw }}

{{ pjax_end() }}

注意 请注意,在上面的示例中,通过 pjax 实现了 "change" 下拉列表事件的处理

'onchange': '$.pjax.reload({container: "#pjax-catalog", url: $(this).val()})',

许可证

此软件包在 MIT 许可证下发布。有关详细信息,请参阅 LICENSE.md。

贡献

您可以通过提交拉取请求或创建新问题来贡献。