管理申报表和结果页面的最佳方式
Posted
技术标签:
【中文标题】管理申报表和结果页面的最佳方式【英文标题】:Best way to manage filer form and result page 【发布时间】:2015-02-05 08:16:48 【问题描述】:在 Symfony 中管理过滤器页面和结果页面的最佳方式是什么? 我有一个管理过滤器表单和执行查询的控制器。此查询的结果必须传入另一个控制器操作。结果必须显示在另一个控制器操作中,因为我使用了 knp_paginator。如果我在过滤器表单的相同控制器操作中呈现结果,则在更改页面时控制器显示过滤器表单而不是结果。
【问题讨论】:
我通常在一个单一的action方法中实现所有,考虑将表单过滤结果传递给GET方法以更好地处理分页。看看PUGXGeneratorBundle
是如何工作的here。使用 KNP 和 LEXIK 作为过滤器生成简单的 CRUD,然后您可以简单地使用相同的方法来满足您的需要。希望对您有所帮助。
如果你需要同样的例子,请告诉我
我花了整个下午,但我做到了。感谢您的可用性:-)
太棒了!如果您有时间,请考虑分享您的解决方案作为问题的答案
【参考方案1】:
这是我使用的方法:
创建查找表单的操作:
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)
);
请求被传递给搜索函数(请求包含查询字符串) 在搜索动作中:
private function searchDocument(Request $request)
$parm = $request->query;
$repository = $this->getDoctrine()->getRepository('docliteBundle:Document\\document');
$query = $repository
->createQueryBuilder('d');
....
使用 $request->query->get() 我可以访问所有参数。
希望这对某人有所帮助。
附:对于我使用的分页KNP_paginator
【讨论】:
以上是关于管理申报表和结果页面的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章
s-s-rS 2008r2 在报表管理器的主显示页面中截断报表描述