i4erkasov / yii2-drop-down-list-sorter
Yii2 下拉列表排序器
1.0
2023-04-20 18:32 UTC
Requires
- php: ^7.1
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-09-20 21:57:47 UTC
README
使用 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。
贡献
您可以通过提交拉取请求或创建新问题来贡献。