Форма заявки с сайта — Сайт (Приложение) Эксперт найден

Бюджет: По договоренности

Имеется форма отправки заявки с сайта: https://prestige-otel.ru/book/

Проблемы:

  1. Код формы коряво встроен в /wa-apps/site/lib/classes/siteViewHelper.class.php
    1. Результат → каждое обновление Webasyst оно стирается
  2. Форма заметно тормозит. После нажатия кнопки "Отправить заявку" ей надо подумать. Иногда пользователи нажимать кнопку по 3 раза и приходит в итоге 3 одинаковых заявки. 

Что требуется:

  1. Нормально интегрировать код формы в Webasyst.Сайт, например в виде плагина. 
  2. Разобраться почему тормозит при отправке и починить 
  3. Если первые 2 пункта не имеются смысла, написать новый и простой код отправки формы 

Код отвечающий за отправку формы:

public function sendEmail($to, &$errors)
    {
        //var_dump($to);
        if (!$to) {
            $app_settings_model = new waAppSettingsModel();
            $to = $app_settings_model->get('webasyst', 'email');
            
        }
        if (!$to) {
            $errors['all'] = _ws('Recipient (administrator) email is not valid');
            return false;
        }
        /*if (!wa($this->app_id)->getCaptcha()->isValid()) {
            $errors['captcha'] = _ws('Invalid captcha');
        }*/
        $email = $this->post('email');
        $email_validator = new waEmailValidator();
        $subject = trim($this->post('subject', 'Престиж. Бронирование с сайта '.$this->post('phone')));

        $posts = waRequest::post();
        foreach($posts as $key=> $value) {
            $body .= "\n".$key.': '.$value;
        }
        //var_dump($posts);
        /*$body = trim($this->post('body'));
        if (!$body) {
            $errors['body'] = _ws('Please define your request');
        }*/
        /*if (!$email) {
            $errors['email'] = _ws('Email is required');
        } elseif (!$email_validator->isValid($email)) {
            $errors['email'] = implode(', ', $email_validator->getErrors());
        }*/
        //var_dump($errors);
        if (!$errors) {
            $m = new waMailMessage($subject, nl2br($body));
            $m->setTo($to);
            $m->setFrom(array($this->post('orderMail') => $this->post('name')));
            if (!$m->send()) {
                $errors['all'] = _ws('An error occurred while attempting to send your request. Please try again in a minute.');
            } else {
                header('Location: https://prestige-otel.ru/spasibo/');
                return true;
            }
        }
        return false;
    }

4 ответа

Откликнуться на заказ

Отклики на заказы могут добавлять только зарегистрированные эксперты и разработчики Webasyst. Стать экспертом.

Чтобы добавить комментарий, зарегистрируйтесь или войдите