为了账号安全,请及时绑定邮箱和手机立即绑定

结合 pagerfanta 的搜索结果

结合 pagerfanta 的搜索结果

PHP
小怪兽爱吃肉 2023-05-26 17:01:17
我有一个显示项目列表的应用程序,在主页上我添加了带有两个输入的表单,第一个包含月份值,第二个包含年份值;我在控制器内部设置了动作,在该动作中有一个函数接受两个参数“月、年”。/** * @Route("/bills",defaults={"page": "1"} , name="bills", methods={"GET"}) * @Route("/bills/page/{page<[1-9]\d*>}", name="bills_paginated", methods="GET") * @param BillRepository $billRepository * @param Request $request * @param int $page * @return Response */public function indexBills(BillRepository $billRepository,Request $request, int $page): Response{    $formBills = $this->createForm(BillsType::class);    $formBills->handleRequest($request);    $getArgs= $request->query->get('bills');    $Bills =$billRepository->unpaidBills($getArgs,$page);    return $this->render('homePage/bills.html.twig', [        'formBills'=>$formBills->createView(),        'Bills'=> $Bills ,    ]);}当我提交搜索表单时,结果按预期显示,页面分页也在那里,但是当我单击下一页(例如页面“2”)并且发生这种情况是因为它是空的有没有办法$getArgs保持更改页面时使用相同的参数。谢谢 :)
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

当您点击“第 2 页”时,您不会发送“年”和“月”数据。

解决方案 1 -bills从控制器注入表单数据

我认为,最简单的方法是将 发送$request->query->get('bills')到树枝,formData例如。在你的树枝上添加'bills' : formData你的路线参数bills_paginated

如果你这样做,symfony 将在你的 url 中添加你的表单数据,并且当你更改页面时你不会丢失它们,所以当你这样做时你就有了你的$getArgs= $request->query->get('bills');数据

解决方案 2 -bills从树枝获取表单数据

这是最简单的解决方案,直接在树枝中获取账单表单数据,如下所示{% set formData = app.request.get('bills') %}:在你的树枝上添加'bills' : formData你的路线参数bills_paginated

最佳解决方案

IMO 最好和最干净的解决方案是像这样有一条包含年份和月份的路线"/bills/year/{year<[1-9]\d*>}/month/{month<[1-9]\d*>}/page/{page<[1-9]\d*>}"


查看完整回答
反对 回复 2023-05-26
?
隔江千里

TA贡献1906条经验 获得超10个赞

我自己弄明白了,谢谢大家。所以如果有人遇到和我一样的问题,我就是这样解决的:


在 twig 显示搜索结果的页面内,在 pagerfanta 分页功能的底部,我添加了一个routeParams.


{%

  set params = app.request.get('bills')

%}


{% if Bills.haveToPaginate %}

      <div class="card-footer pagination">

        {{

           pagerfanta(Bills, 'twitter_bootstrap4_translated',

             {

              routeName: 'bills_paginated',

              routeParams:{bills:params}

             })

        }}

      </div>



{% endif %}

现在每次我点击一个特定的页面时都params保持不变。

我希望代码足够清晰并有所帮助。


查看完整回答
反对 回复 2023-05-26
  • 2 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信