yii2 - Yii2:在分页器上呈现页面大小选择器的简单方法
问题描述
是否有任何简单且原生的方法可以将每个页面选择器的项目的 html 呈现添加到 ListView 的分页器?我浏览了文档:
找到了我需要的一切,除了渲染页面大小选择器。这有点奇怪,因为这是一个非常常见的功能。
解决方案
不,没有本地方法可以做到这一点,您可以创建自己的或使用这个:
在您的模型过滤器中定义:
class YOUR_CLASS_FILTER extend YOUR_MODEL
...
public $pagesize; // Property pagesize.
const ITEMS_PER_PAGE_INIT = 12; // Initial items per page
...
//Add or edit this in the same model `search` method:
public function search($params){
...
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
// this $params['pagesize'] is an id of dropdown list that we set in view file
'pagesize' => ($this->pagesize) ? $this->pagesize : self::ITEMS_PER_PAGE_INIT,
],
]);
...
}
...
public function rules()
{
return [
...
[['pagesize'], 'integer'],
...
];
}
...
/**
* Return Static Array of elements per page
* @return array
*/
public static function itemsPerPage()
{
return array(
12 => 12,
24 => 24,
48 => 48
);
}
}
这就是我在视图文件中实现的方式:
<?= $form->field($filter, 'pagesize')->dropDownList(
$filter->itemsPerPage(),
array(
'id' => 'pagesize',
'class' => 'form-control',
'onchange' => 'this.form.submit()',
))->label("Items per page: ")
?>
推荐阅读
- python - 基于密钥从 JSON 文件中获取项目失败,尽管它存在于文件中
- python - plotly-dash中的模式匹配回调
- python - For循环数据框:如何打印索引名称而不是数字i和j?
- laravel - 图片上传 Laravel 7 VueJS
- azure - 数据库连接不适用于升级的 Azure 定价层
- android - Java 错误:找不到符号公共类
- r - 使用了 `row.names` 函数,但行名仍显示为“row1”、“row2”、“row3”等
- c++ - C++ 程序在从 Main 中调用函数时崩溃?
- python - Python for 循环。从 AWS 中提取特定值
- python - 这是我在尝试解决黑客等级热身练习时遇到的问题