如何使用KnpPaginatorBundle对搜索表单的结果进行分页?

时间:2018-08-16 11:26:54

标签: symfony-2.8

我正在处理Symfony 2项目,并且我使用KnpPaginatorBundle,第一页可以正常工作,但是第二页向我显示此错误:“控制器必须返回响应(给定为null)。是否忘记添加return语句您控制器中的某处?“我不明白,请帮助我


这是我的控制器:

public function searchAction(Request $request) {
    $search_form = $this->createForm(new SearchInterventionBatimentType()); 

    if ($request->isMethod('post')) {
        $search_form->handleRequest($request);
        if ($search_form->isValid()) {
            $data = $search_form->getData();
            $from = $data['from'];
            $to = $data['to'];
            $intervenant= $data['intervenant'];
            $type= $data['type'];
            $batiment = $data['batiment'];

            $em = $this->getDoctrine()->getManager();
            $intervention = new InterventionBatiment();

            if(is_null($intervenant) && is_null($type) && is_null($batiment)) {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByDate($from,$to);
            } elseif(is_null($type) && is_null($batiment)) {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByDateAndIntervenant($from,$to,$intervenant);    
            } elseif (is_null($intervenant) && is_null($batiment)) {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByDateAndType($from,$to,$type);
            } elseif (is_null($intervenant) && is_null($type)) {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByDateAndBatiment($from,$to,$batiment);
            } elseif (is_null($batiment)) {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByDateAndIntervenantAndType($from,$to,$type,$intervenant);
            } else {
                $intervention = $em->getRepository('SecteurBundle:InterventionBatiment')->findByAll($from,$to,$type,$intervenant,$batiment);

            }

            $paginator= $this->get('knp_paginator');
            $result= $paginator->paginate(
                    $intervention, /* query NOT result */
                    $request->query->getInt('page', 1)/*page number*/,
                    $request->query->getInt('limit', 8)/*limit per page*/
            );

            return $this->render(
                    'SecteurBundle:InterventionBatiment:recherche.html.twig',
                    array('interventions' => $result,'form' => $search_form->createView())
            );
        }
    }
}

1 个答案:

答案 0 :(得分:0)

控制器应始终需要发送响应。

根据您的情况,您需要发送回复如果表格无效

if ($search_form->isValid()) {
}

return your response here too (if the form is not valid)