Paginating API响应

时间:2012-09-11 10:35:45

标签: api pagination symfony-1.4 onapp

我在我的一个网站上使用onapp api。现在我需要显示用户已购买的服务器列表。我将这些数据作为对象作为API调用onapp服务器的响应。但有时,它是一个巨大的列表,所以我需要对它进行分页。我目前的分页是面向数据库的,它选择特定数量的数据,并根据页面给出限制。但在api回应。我一次得到了所有回复。

那么我如何在服务器端进行分页而不是依赖于客户端分页..?

1 个答案:

答案 0 :(得分:0)

从SF1.4调用Web服务时我必须做同样的事情,但在我的情况下,WS承认分页参数。无论如何我想在结果中使用sfPager,所以我创建了一个继承自sfPager的类:

class sfWSPager extends sfPager {
public function getResults() {
    return $this->results;
}

public function init() {
    if (0 == $this->getPage() || 0 == $this->getMaxPerPage() || 0 == $this->getNbResults())
        $this->setLastPage(0);
    else {
            $this->setLastPage(ceil($this->getNbResults() / $this->getMaxPerPage()));
        }
}

public function setResults($results) {
    $this->results = $results;
}

public function setNbResults($nb) {
    parent::setNbResults($nb);
}
}

然后在我的行动中:

$this->pager = new sfWSPager(null);
$this->pager->setResults($dataResultsFromWS);
$this->pager->setNbResults($totalNbOfResults);
$this->pager->setPage($page);

$this->pager->init();

所以我一直在使用Symfonys的sfPager功能。