在symfony 2.3上使用Knp paginator与奇怪的控制器

时间:2017-09-12 13:13:51

标签: php symfony pagination knppaginator knppaginatorbundle

我在symfony 2.3项目中使用Knp paginator,这个项目对我来说很新,所以控制器使用起来有点奇怪。

我试图安装它,但仍有一些东西阻止其正常运行。

我跟随此tutorial actually

这是我控制器中的代码

progressBar.bringToFront();

我的命名空间和类使用:

private function resultsAction(Request $request, User $user, $type, $archive)
{
     $em = $this->getDoctrine()->getManager();

     $results = $em->getRepository("randomRepo")->findByTypeAndPro($type, $user, $archive);

     /**
      * @var $paginator \Knp\Component\Pager\Paginator
      */
     $paginator = $this->get('knp_paginator');
     $results = $paginator->paginate(
         $results,
         $request->query->getInt('page',1),
         $request->query->getInt('limit',5)
     );


     return array("results" => $results, "archive" => $archive);
}

public function offerAction(User $user, $archive = false)
{
     return $this->resultsAction($user, Operation::OFFER, $archive);
}

所以当我尝试加载我的页面时,我收到了这个错误:

enter image description here

2 个答案:

答案 0 :(得分:2)

调用action时必须传递Request类:

public function offerAction(Request $request, User $user, $archive = false)
{
    return $this->resultsAction($request, $user, Operation::OFFER, $archive);
}

答案 1 :(得分:1)

您忘记将Request参数添加到ResultsAction调用中。

声明包含4个参数:

resultsAction(Request $request, User $user, $type, $archive)

呼叫包含3:

public function offerAction(User $user, $archive = false)
{
    return $this->resultsAction($user, Operation::OFFER, $archive);
}