Yii2 ValidatePage 在错误的页码上给出空输出

Yii2 ValidatePage to give empty output on wrong page number

我正在尝试使用我的 yii2 应用程序从 table 中获取产品列表,并将其作为 json 发送到前端滚动时的延迟加载。我正在使用搜索模型 class。现在,当数据结束时,最后一页数据将再次发送,即,如果我有一百条记录,对页码 5 以上的调用将重复发送与页码 4 相同的数据。我如何防止它。 PS:阅读文档时对 validatePage 标志的用法感到困惑。

这是我的控制器代码。

public function actionAjaxIndex()
{

  $searchModel = new productsS();
    $response = (object) ['status' => 0];
  $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
        $response->status = 1;
        $response->data = array();
        foreach($dataProvider->models as $row){
            foreach($row as $key=>$value){
                $customerDetail[$key] = $value;
            }
            array_push($response->data, $customerDetail);
        }
        return json_encode($response);
}

有人可以提供最好的解决方案以继续进行吗?

您需要为您的数据提供商禁用 $validatePage。如果页面超出范围,此设置将覆盖页面(因此,如果您有 4 页记录,但您请求第 5 页,分页将自动切换到第 4 页 - 超出范围的每一页都将显示最后一页的结果)。

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider->pagination->validatePage = false;