首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP如何从API数据源创建分页

CakePHP如何从API数据源创建分页
EN

Stack Overflow用户
提问于 2020-09-02 05:57:01
回答 2查看 256关注 0票数 0

我有一个类似于示例的API

我使用cakephp HTTP客户端获取数据,下面是我尝试的代码

代码语言:javascript
复制
public index()
{
    $http = new Client();
    $response = $http->get('https://restcountries.eu/rest/v2/all');
    // $json = $response->getJson();  //also tried usgin json
    $countries = $this->paginate($response);
    $this->set(compact('countries '));
} 

我正在尝试用这个国家的数据应用分页,然后从分页的角度来获取它。在尝试了以上代码之后,我得到了以下错误

参数1传递给Cake\Datasource\Paginator::extractData()必须是Cake\Datasource\RepositoryInterface的实例,Cake\Http\Client\Response的实例,在联机\myapp\vendor\cakephp\cakephp\src\Datasource\Paginator.php中调用

我怎样才能得到我渴望的结果呢?

EN

回答 2

Stack Overflow用户

发布于 2020-09-02 06:11:25

您可能需要实现一个扩展RepositoryInterface的类。

代码语言:javascript
复制
class JsonSource implements Cake\Datasource\RepositoryInterface 
{ ... }

public index() {
  $http = new Client();
  $response = $http->get('https://restcountries.eu/rest/v2/all');

  $src = new JsonSource();
  $src->fromResponse($response);

  $countries = $this->paginate($src);
  $this->set(compact('countries ')); }

这有点乏味,因为您需要像定义数据源一样定义Json。

票数 1
EN

Stack Overflow用户

发布于 2020-09-02 10:17:23

默认分页只支持查询表(存储库)或对预先构建的查询实例进行操作。

@Zeppi的回答上扩展。基本上,这里有三个比较简单的选项:

  1. 创建@Zeppi所暗示的自定义查询/存储库实现。 但是,这确实需要大量的工作,因此您可能需要考虑通过插件来替代地实现它,例如松饼/webservice,它完成了实现所需接口的大部分艰苦工作。
  2. 或者创建一个实际接受和处理数组数据的自定义分页器
  3. 或者使用众所周知的"datatable",即前端的基于JavaScript的表,用于分页数据,例如jQuery DataTables
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63699494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档