我在同一页面上使用过滤形式和分页来显示大量对象。 如果我使用POST表单,经过分页过滤重置。如果我使用GET表单过滤工作,但URL不清楚,甚至有令牌。
这样的事情: ?形式[date_from] [年份] =&放大器;形成[date_from] [月] =&放大器;形成[date_from] [日] =&放大器;形成[DATE_TO] [年份] =&放大器;形成[DATE_TO] [月] =放大器;形成[DATE_TO] [天] =&安培;形式[电子邮件] = email和安培;形式[提交] =&安培;形成[_token] = Nk0prilVJiROZaQQKvCt-hRfnKdh0IdDOWOIer
是否有办法让网址更清晰,隐藏令牌和未使用的参数?
答案 0 :(得分:0)
好吧,我找不到解决办法和写服务来处理会话中的表格过滤数据。
答案 1 :(得分:0)
保存过滤:在控制器中使用数组:
$filter_array=[];
if ($search_form->isSubmitted() && $search_form->isValid()) {
$search_form->getData();
//save post/get form data without empty fields
$filter_array[$search_form->getName()]=array_filter(
$request->get($search_form->getName()),
function($value) { return $value !== ''; });
//... etc
}
解决方案1-在页面链接中创建表单,并使用$ filter_array
添加隐藏字段解决方案2-页面链接使用脚本添加隐藏的表单字段和页码并提交表单,但是单击之前可以修改表单。
解决方案3-将分页器导航和搜索结果放入div中,对所有操作使用jquery.load()(发送表单,页面链接,$(文档).ready()...)。该网址将类似于domain / page /#page_1:
{% for i in range(1, paginator.getTotalPages()) %}
<li {% if paginator.getPage() == i %} class="active"{%endif%}>
<a href="#page_{{i}}" onClick="
$('{{selector}}').load('{{ paginationPath }}',
{{filter_array|merge({page: i,})|json_encode()}});"
href="#page_{{i}}">{{ i }}</a>
</li>
{%endfor%}