Я пытаюсь обработать форму фильтра для списка моего приложения.
У меня есть форма:
$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 останется прежним, и фильтр больше не будет работать (что, как я знаю, нормально) ...
Как бы высправиться с этим?Спасибо за вашу помощь.