首页 > 解决方案 > Yii2:在分页器上呈现页面大小选择器的简单方法

问题描述

是否有任何简单且原生的方法可以将每个页面选择器的项目的 html 呈现添加到 ListView 的分页器?我浏览了文档:

  1. Yii 小部件列表视图
  2. Yii 数据分页
  3. Yii 小部件链接页面

找到了我需要的一切,除了渲染页面大小选择器。这有点奇怪,因为这是一个非常常见的功能。

标签: yii2paginator

解决方案


不,没有本地方法可以做到这一点,您可以创建自己的或使用这个:

在您的模型过滤器中定义:

    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: ")
?>

推荐阅读