Symfony2:Knppaginator仅显示带有帖子表格的第一页



我正在应用程序中使用此捆绑包。控制器是典型的显示搜索表格,采用响应并处理它(一个示例):

public function indexAction()
{
    $request = $this->getRequest();
    $example = new Example();
    $form = $this->createForm(new ExampleFindType(), $example, array(
            'action' => $this->generateUrl('example_find'),
            'method' => 'POST',
    ));
    $form->handleRequest($request);
    if ($form->isValid())
    {
        $em = $this->getDoctrine()->getManager();
        $examples = $em->getRepository('ApplicationExampleBundle:Example')
            ->find_by_fields($example);
        $paginator  = $this->get('knp_paginator');              
        $pagination = $paginator->paginate(
                $examples,
                $this->get('request')->query->get('p', 1),
                20
        );
        return $this->render('ApplicationExampleBundle:Default:searchResults.html.twig',
                array('pagination' => $pagination));
    }
    return $this->render('ApplicationExampleBundle:Default:index.html.twig',
            array('form' => $form->createView(),
            ));
}

执行搜索时,我会正确查看结果列表和Paginator。当我按下下一页的链接时会出现问题。链接ID生成了很好的,URL以"?p = 2"结尾,但似乎表单帖子数据并不讨厌,因为它将我发送到搜索表格页面($ form- form-> form-> iSvalid()为false)。<<<<<<<<<<<<<<<<<<<</p>

如果我更改了从帖子进行表单方法以获取和传递URL中的参数:

$form = $this->createForm(new ExampleFindType(), $example, array(
           'action' => $this->generateUrl('example_find'),
           'method' => 'GET',
));

女指形式完美。

我做错了什么吗?可以使用帖子表格吗?

我已经搜索了一个答案,但是我所见过的所有knppagintor控制器示例都没有用表单产生查询,这个问题对我没有帮助。

谢谢。

您不应该使用邮政方法获取数据。

否则,如果您需要使用 post 方法,则需要会话中的数据。然而

您可以在MDN上找到有关HTTP的大量文档。

  • A GET 当请求数据时应使用方法。
  • A POST 当保存数据(例如将注释保存到数据库中)或其他数据操作时,应使用方法。

Google在自己的搜索页面上使用 get

https://www.google.com/#q = symfony&start=10

q是我搜索的内容,start是Paginator值。他们可能使用偏移而不是页码来避免计算偏移(更快,更便宜)。

相关内容

  • 没有找到相关文章