Symfony 管理文件管理器表单和结果页的最佳方法

Symfony 管理文件管理器表单和结果页的最佳方法,symfony,Symfony,在Symfony中管理筛选页面和结果页面的最佳方法是什么? 我有一个控制器来管理过滤表单和执行查询。此查询的结果必须传入另一个控制器操作。结果必须显示在另一个控制器操作中,因为我使用了knp_paginator。如果我在过滤器窗体的相同控制器操作中呈现结果,则在更改页面时,控制器将显示过滤器窗体而不是结果 这是我使用的方法: 创建查找表单的操作: public function findAction(Request $request) { $form = $this->creat

在Symfony中管理筛选页面和结果页面的最佳方法是什么?
我有一个控制器来管理过滤表单和执行查询。此查询的结果必须传入另一个控制器操作。结果必须显示在另一个控制器操作中,因为我使用了knp_paginator。如果我在过滤器窗体的相同控制器操作中呈现结果,则在更改页面时,控制器将显示过滤器窗体而不是结果

这是我使用的方法:

创建查找表单的操作:

public function findAction(Request $request)
{

    $form = $this->createFindForm($request);

    $form->handleRequest($request);

    if(($form->isSubmitted() && !$request->isXmlHttpRequest()))
    {
        if(($this->isValidFindForm($form) && $form->isValid()))
        {
            $parm = $request->request->get('findForm');
            return $this->redirect($this->generateUrl('list_documents',$parm));
        }
    }

    return $this->render(
            'myBundle:Documents:document\document_find.html.twig',
            array('form' => $form->createView())
    );
}

private function createFindForm(Request $request)
{
    $form = $this->createForm(
                new findDocumentType(
                    $this->getDoctrine()->getManager(),
                    $request
                ),
                null,
                array(
                    'action' => $this->generateUrl('find_documents'),
                    'method' => 'POST',
                )
            );
    return $form;
}
我使用$parm=$request->request->get('findForm');要得到查询字符串。“findForm”是我的筛选表单的名称

重定向操作:

public function listAction(Request $request)
{
    $documents = $this->searchDocument($request);
    $paginator = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
            $documents,
            $this->get('request')->query->get('page', 1)
    );
    return $this->render(
            'myBundle:Documents:document\document_list.html.twig',
            array('pagination' => $pagination)
    );
}
请求被传递给搜索函数(请求包含querystring) 在搜索操作中:

private function searchDocument(Request $request)
{
    $parm = $request->query;
    $repository = $this->getDoctrine()->getRepository('docliteBundle:Document\\document');
    $query = $repository
                ->createQueryBuilder('d');
 ....
通过$request->query->get()我可以访问所有参数

希望这能帮助别人


<> P.S.对于我使用的分页符

,我通常在一个动作方法中实现所有,考虑在GET方法中传递表单筛选器结果,以便更好地处理分页。看看
PUGXGeneratorBundle
是如何工作的。使用KNP和LEXIK作为过滤器生成简单的CRUD,然后您可以根据需要简单地使用相同的方法。希望这对你有所帮助。如果你需要同样的例子,请告诉我。我花了整整一个下午,但我还是做了。感谢您提供:-)太好了!如果你有时间,考虑分享你的答案作为问题的答案。