处理过滤器表单和重置按钮

时间:2018-10-09 09:26:45

标签: php forms symfony-2.7

我正在尝试处理我的应用程序列表的过滤器表单。

我有一个表格:

$form = $this->createForm(new FilterAppliType());

当用户提交过滤器时,我将表单保存在会话中,如果用户离开页面并返回,则重新加载表单。

$form->handleRequest($request);

if (!$form->isSubmitted()) {
    $this->get('application')->populateFormAppliFromSession($form);
}

// Save form data to session
if ($form->isSubmitted() && $form->isValid()) {
    $this->get('application')->saveFormAppliToSession($form);
}

带有一些序列化/反序列化。这部分正在工作。

但是现在,我想处理一个重置按钮,该按钮可以取消设置表单并删除会话属性。

所以我尝试了:

<a href="{{ path('application_index', { 'reset': 'true' }) }}" class="btn btn-hollow btn-sm">
    <span>Reset filter</span>
</a>

在我的控制器中:

$form = $this->createForm(new FiltreAppliType());
if($request->query->has('reset')){
    if($this->get('session')->has('filter_appli')){
        $this->get('session')->remove('filter_appli');
    }
    unset($form);
    $form = $this->createForm(new FiltreAppliType());
}else{
    $form->handleRequest($request);
    // Populate it if we already have data from the request or from session, only when not submitted
    if (!$form->isSubmitted()) {
        $this->get('application')->populateFormAppliFromSession($form);
    }

    // Save form data to session
    if ($form->isSubmitted() && $form->isValid()) {
        $this->get('application')->saveFormAppliToSession($form);
    }
}

问题是,因为我使用以下方式提交了表单过滤器:

{{ form_row(form.state, { 'attr': { 'onchange':"javascript:submit();" }}) }}

当我第一次单击“重置”按钮时,我在URL中/ application /?reset = true,然后如果更改过滤器状态,则URL保持不变并且过滤器不再工作(这是正常,我知道)...

您将如何处理? 感谢您的帮助。

0 个答案:

没有答案