Php Yii2 ArrayDataProvider不显示已分页的数据
我对Yii2提供的ArrayDataProvider对象有问题。我有一个巨大的API调用,返回超过7k项(这是一个问题,因为获取所有项需要很长时间)。我意识到我可以告诉API为我分页,所以我试图将已经分页的数据实现到ArrayDataProvider中,但只在第1页起作用,当我请求第2页时,我看到API返回了接下来的50项,但在我看来GridView对象没有显示任何内容 例如:Php Yii2 ArrayDataProvider不显示已分页的数据,php,arrays,yii2,Php,Arrays,Yii2,我对Yii2提供的ArrayDataProvider对象有问题。我有一个巨大的API调用,返回超过7k项(这是一个问题,因为获取所有项需要很长时间)。我意识到我可以告诉API为我分页,所以我试图将已经分页的数据实现到ArrayDataProvider中,但只在第1页起作用,当我请求第2页时,我看到API返回了接下来的50项,但在我看来GridView对象没有显示任何内容 例如: $dataProvider = new ArrayDataProvider([ 'key' =>
$dataProvider = new ArrayDataProvider([
'key' => 'id',
'allModels' => $items,
'totalCount' => self::GetNumOfItems(),
'sort' => [
'attributes' => ['id', 'name', 'email'],
],
'pagination' => [
'pageSize' => 50,
],
]);
我要求正确显示分页器的项目总数。如果我要求第1页,一切正常,但如果更改到第2页或其他任何页面,gridview没有显示任何项目。我怀疑这和已经分页的数据有关,但是,有什么方法可以让它工作吗
ArrayDataProvider
对$allModels
中的所有元素进行分页。所以,如果您每页有50个项目,第二页将显示51-100型。如果您已经有分页数据,并且$items
仅包含第二页中的50个元素,ArrayDataProvider
仍将搜索不存在的51-100型号,因此您将得到空页
在您的情况下,您可能不应该使用ArrayDataProvider
,而应该编写自己的数据提供程序,它将像API的代理一样工作ArrayDataProvider
仍然需要所有模型来执行排序或筛选,因此您可以从API获取所有7k项并允许在ArrayDataProvider
级别处理筛选和排序,或者应该在API级别进行筛选和排序,并且framework core中的现有数据提供程序都不能满足您的需要。
您可以使用类似于
ProxyDataProvider
的工具搜索扩展,但可能很难找到与您的API匹配的工具。添加$items
和totalCount
函数。