Обработка формы фильтра и кнопки сброса - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь обработать форму фильтра для списка моего приложения.

У меня есть форма:

$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 останется прежним, и фильтр больше не будет работать (что, как я знаю, нормально) ...

Как бы высправиться с этим?Спасибо за вашу помощь.

...