Автор Тема: Перестает работать submit формы  (Прочитано 276 раз)

08 Август 2020, 19:51:43
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте
Написал свой контроллер + tpl для него.
На странице есть форма:
<form method="post" id="calendar_form" name="calendar_form" class="form-inline">
        .....
<div class="col-lg-6">
<button type="submit" name="submitEx" class="btn btn-default">
     <i class="icon-save"></i>   
Выгрузить в Excel
</button>
</div>
</form>
ну и в контроллере обрабатываю нажатие на кнопку:
public function postProcess()
{
if (Tools::isSubmit('submitEx')) {
...
Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token);
}
}
Пока все четко. Далее добавляю в форму элемент select и "вешаю" на него submit формы (onChange="this.form.submit();"):
<form action="{$action|escape}" method="post" id="calendar_form" name="calendar_form" class="form-inline">
<div class="col-lg-4">
<select id="cur_category" class="chosen form-control" name="cur_category" onChange="this.form.submit();">
{foreach from=$cat_list item=onecat}
<option  value="{$onecat['id_category_default']|intval}"
{if isset($currentCut) && $onecat['id_category_default'] == $currentCut}
selected="selected"
{/if}
>
{$onecat['category']|escape}
</option>
{/foreach}
</select>
</div>
<div class="col-lg-6">
<button type="submit" name="submitEx" class="btn btn-default">
     <i class="icon-save"></i>   
Выгрузить в Excel
</button>
</div>
</form>

ну и соответственно в контроллере:
public function postProcess()
{
if (Tools::isSubmit('cur_category')) {
...
Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token);
}
if (Tools::isSubmit('submitEx')) {
...
Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token);
}
}
Вот здесь появляется проблема: при нажатии кнопки 'submitEx' - "срабатывает" Tools::isSubmit('cur_category') от select.

 Что не так делаю?
Спасибо.
10 Август 2020, 10:03:35
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Потому что this.form.submit() и клик на submitEx одно и тоже, вызыв контроллера и передача в него данных формы.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
11 Август 2020, 07:57:18
Ответ #2
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Потому что this.form.submit() и клик на submitEx одно и тоже, вызыв контроллера и передача в него данных формы.
А как эту ситуацию лечить?

Сам додумался - поменять местами порядок проверки в PostProcess()