2016-08-24 56 views
1

我有一个应用程序使用web服务。我的应用程序发送请求到web服务这样的:仅使用Pagerfanta助手与Symfony 2和树枝

请求例如:

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

所以我得到公正结果的一片,而不是完整的阵列,否则我可以用ArrayAdapter在我的控制器进行分页。我想在我的视图中使用树枝的扩展来生成DOM元素。

响应例如:

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

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

感谢

+0

我不认为你需要Pagerfanta操纵结果(如果已经由webservice管理),但创建一个DOM元素paginator与这个数据(当前页面和总数) – yceruto

回答

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, 
    ]); 
} 

希望这会有所帮助。