如何在 Yii2 GridView 中显示分页?

How do I display pagination in Yii2 GridView?

我正在获取我的 dataProvider,我试图从中删除一些不符合所需标准的模型。此过滤器与 SQL 无关,因此我无法将其直接应用于查询。在我看来,如果我让数据提供者保持原样,则会显示分页链接。但是在我应用过滤器删除不需要的模型后,分页链接消失了。我已经尝试在我的新 dataProvider 上设置分页,但没有任何效果。

这是我在控制器操作中的代码:

 $request = Yii::$app->request;
    $search_model = new StaffEmploymentListViewSearch();
    $data_provider = $search_model->search($request->queryParams);

    $models = $data_provider->models;
    for($k=0;$k<count($models);$k++)
    {
        if($models[$k]->employ === null){
            unset($models[$k]);
        }
    }
  
    $config = [
        'pageParam' => 'page',
        'pageSizeParam' => 'per-page',
        'forcePageParam' => true,
        'route' => null,
        'params' => null,
        'urlManager' => null,
        'validatePage' => true,
        'totalCount' => 5214,
        'defaultPageSize' => 20,
        'pageSizeLimit' => [
            '0' => 1,
            '1' => 50
        ],
        'pagesize' => 20
    ];
 
    $data_provider->setModels($models);
    $data_provider->setPagination($config);

    return $this->render('all-staff',[
        'dataProvider' => $data_provider,
        'searchModel' => $search_model
    ]);

这是我的搜索方法:

$query = StaffEmploymentListView::find()
            ->SELECT([
                'PAYROLL_NO', 
                'BIRTH_DATE',
                "ADD_MONTHS(BIRTH_DATE, 70 * 12) AS RETIRE_DATE"
            ]);
    
    // add conditions that should always apply here
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'sort' => false,
        'pagination' => [
            'pagesize' => 20,
        ],
    ]);

我该怎么做?

尝试使用ArrayDataProvider

    $query = StaffEmploymentListView::find()
            ->select([
                'PAYROLL_NO', 
                'BIRTH_DATE',
                "ADD_MONTHS(BIRTH_DATE, 70 * 12) AS RETIRE_DATE"
            ]);
    
    $allModels = [];
    foreach ($query->all as $staffEmployment)
    {
        if ($model->employ === null){
            $allModels[] = $model;
        }
    }

    $dataProvider = new ArrayDataProvider([
        'allModels' => $allModels,
        'pagination' => [
            'pageSize' => 20,
        ],
        'sort' => false
    ]);

    return $this->render('all-staff',[
        'dataProvider' => $data_provider,
        'searchModel' => $search_model // ???
    ]);