1

我有一个使用 Web 服务的应用程序。我的应用程序向网络服务发送请求,如下所示:

请求示例:

https://mywebservice.com/interesting-route/?page=4&limit=30

所以我只收到了一部分结果,而不是完整的数组,否则我可以使用 ArrayAdapter 在我的控制器中进行分页。我只想使用 twig 扩展在我的视图中生成 DOM 元素。

响应示例:

{
  results:
    [
      {
        title: 'Nice title',
        body: 'Nice body'
      },
      ...,
      {
        title: 'Nice title',
        body: 'Nice body'
      },
    ],
  total: 1350,
  limit: 30
]

有什么办法,也许使用FixedAdapter?

谢谢

4

1 回答 1

1

正如你所说,FixedAdapter应该在这里做你需要的。这是您可以修改的一些示例控制器代码:

public function someAction(Request $request)
{
    $page = 1;
    if ($request->get('page') !== null) {
        $page = $request->get('page');
    }
    $totalResults = // call your webservice to get a total
    $limit = 30;

    $slice = $this->callMyWebserviceInterestingRoute($page, $limit);

    $adapter = new FixedAdapter($totalResults, $slice);
    $pagerfanta = new Pagerfanta($adapter);
    $pagerfanta->setMaxPerPage($limit);
    $pagerfanta->setCurrentPage($page);

    return $this->render('default/pages.html.twig', [
        'my_pager' => $pagerfanta,
    ]);
}

希望这可以帮助。

于 2017-05-26T16:05:45.410 回答