Перезагрузка после Post

InstantCMS 2.X
#1 1 декабря 2020 в 14:17
Привет. Вот код обработки формы в виджете. Форма отправляется с модального окна bootstrap.
  1. $mess_contr = cmsCore::getController('messages');
  2. $to = $this->getOptions('email');
  3. if (cmsCore::getInstance()->request->has('addForm')){
  4. $name = cmsCore::getInstance()->request->get('name');
  5. $email = cmsCore::getInstance()->request->get('email');
  6. $text = cmsCore::getInstance()->request->get('text');
  7.  
  8. $this->validate_email($email);
  9.  
  10. $array = array(
  11. 'name' => $name,
  12. 'mail' => $email,
  13. 'subject' => LANG_WD_T_MESS_FROM_FORM,
  14. 'message' => $text
  15. );
  16. $result = $mess_contr->sendEmail($to, 'myform', $array);
  17. if($name&&$email&&$text&&$result){
  18. cmsUser::addSessionMessage(LANG_WD_T_MESS_SUCCESS, 'info');
  19. header('refresh: 3; url='.href_to_home());
  20. }
  21.  
  22.  
  23. }
Редирект происходит, но так, как будто не происходит. То есть, при попытки обновить страницу браузер запрашивает повторную отправку формы. Если убираю в коде перенаправление и возвращаю в ручную, всё как надо. Почему такое может быть?
#2 1 декабря 2020 в 14:32
После header нужно писать die;
Почему методами редиректов, входящих в комплект CMS не пользуетесь?
#3 1 декабря 2020 в 16:44

Почему методами редиректов, входящих в комплект CMS не пользуетесь?

Fuze
Этот метод нашёл в cmsController, но не смог понять как данный класс получить в виджете. Виджет не компонентский.
#4 1 декабря 2020 в 17:05

После header нужно писать die;

Fuze
В этом случае сначала die; срабатывает, потом задержка, а потом возвращает где и был))). Может c версией php как то связанно… Хз короче.
#5 1 декабря 2020 в 17:16
Невнимательно я прочитал.
Так делать в виджете не стоит, обработкой данных должны заниматься контроллеры.

В этом случае сначала die; срабатывает, потом задержка

Lora
Нет. die; срабатывает сразу и хедер сразу посылается в браузер, только у вас странный хедер.

не смог понять как данный класс получить в виджете

Lora
  1. $mess_contr->redirect('/balbla');
В общем меняйте подход, это не дело.
#6 1 декабря 2020 в 17:37
Ясно.Спасибо.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.