下一页的Listview分页和GET参数

Listview pagination and GET parameters on the next page

我有这个 UrlManager 规则:

'<pageSlug>-pa<pageId:\d+>' => 'page/page',

然后我有这样的 url 页面 domain.com/blog-pa54

在这个例子中我有

pageSlug = blogpageId = 54

在我看来,我的博文有 ListView

我这样设置我的数据提供者:

$dataProvider = new ActiveDataProvider([
            'query' => BlogPost::find()
                ->where([
                    'active' => 1
                ]),
            'pagination' => [
                'defaultPageSize' => 3,
                //'params' => [], when I set this, it only shows get param "page"
                'pageParam' => 'page',
                'route' => $pageURL, // this variable is equal to "blog-pa54"
            ],
        ]);

我的路线是当前路线 url slug - blog-pa54 当我转到下一页时,我收到此 url:blog-pa54?pageSlug=blog&pageId=54&page=2

如何从 url 中删除 $_GET 参数 pageSlugpageId? 我尝试设置 pagination > params = [] 并删除此获取参数,但是当我转到其他页面时它不会更改我的 ListView

中的项目

这也是我的 ListViewLinkPager

<div class="blog-post-wrapper">
    <?= ListView::widget([
        'dataProvider' => $blogPostsDataprovider,
        'itemOptions' => ['tag' => null],
        'options' => [
            'tag' => false,
        ],
        'layout' => "{summary}<div class='row'>{items}</div>",
        'itemView' => function ($model, $key, $index, $widget) use ($page) {
            return $this->render('//blog-post/_blogPostList', [
                'page' => $page,
                'model' => $model
            ]);
        },
    ]); ?>
</div>

<?= \yii\widgets\LinkPager::widget([
    'pagination' => $blogPostsDataprovider->pagination,
    'linkContainerOptions' => [
        'class' => 'page-item',
    ],
    'linkOptions' => [
        'class' => 'page-link',
    ],
]); ?>

好的,我明白了。 params 属性不能为空。

你可以这样设置:

'params' => [
    'page' => isset($_GET['page']) ? $_GET['page'] : 1,
]

或者如果您有另一个获取参数,例如获取过滤器:

$getParams = [];
        if(isset($_GET)){
            foreach($_GET as $getKey => $getValue){
                if(in_array($getKey, ['pageSlug', 'pageId'])){ //here I skip my params from UrlManager rule
                    continue;
                }
                $getParams[$getKey] = $getValue;
            }
        }
.....
'params' => $getParams