Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Не работает самописная форма обратной связи


Recommended Posts

Добрый день всем!

На готовый платный шаблон ОС 2.3 я прописал свою самописную форму обр связи. Абсолютно рабочая, проверено много раз на Вордпрессе.

НО на опенкарт я форму вставляю впервые. Естественно, на работает)

В настройках  магазина стоит почта админа с доменным именем  [email protected]

Ту же почту поставил в отправителя в обработчике формы.

Проверить отправку стандартной почты в магазине не могу - магазин на стадии завершения, оформление заказа пока не работает, других форм обр связи нет.

Тех служба хостинга отвечает, что никаких ограничений на почту у них не стоит, и в логе видно, что письма даже не пытаются отправляться на указанные мной адреса.

Форма form action="success.php", путь к success.php прописан правильно, обработчик формы ajax.

в настройках почты только  Mail

Ничего в контроллерах не менял, подозреваю, что надо)

Помогите, пожалуйста.

Спасибо всем, кто ответит!

Edited by mccol
Link to post
Share on other sites

встречал такой совет

"в поле Параметры функции mail указать -fe, а затем почтовый адрес "

Link to post
Share on other sites

ну,  а где форма, аякс, обработчик php?

без этого,  долго будете ждать совета

Link to post
Share on other sites

вынужден удалить некоторый код из-за авторских прав, там где
 

Цитата

...авторский код, рабочий)

<form action="/catalog/view/theme/theme765/success.php" class="js-form" id="popupResult">
        <input type="text" name="name" required placeholder="Введите имя"  class="form-control form__field">
        <input type="text" name="email" required placeholder="Введите E-mail"  class="form-control form__field">
        <input type="text" name="tel" required placeholder="Введите телефон"  class="form-control form__field">

        <button class="btn__red__bottom act font-bold" data-submit>Принять участие в Марафоне!</button>

 </form>

<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js"></script>


$(document).ready(function() {
    $('[data-submit]').on('click', function(e) {
        e.preventDefault();
        $(this).parent('form').submit();
    })
    $.validator.addMethod(
        "regex",
        function(value, element, regexp) {
            var re = new RegExp(regexp);
            return this.optional(element) || re.test(value);
        },
        "Please check your input."
    );

    // Функция валидации и вывода сообщений
    function valEl(el) {

        el.validate({
            ...авторский код, рабочий)
            },

            // Начинаем проверку id="" формы
            submitHandler: function(form) {
                $('#loader').fadeIn();
                var $form = $(form);
                var $formId = $(form).attr('id');
                switch ($formId) {
                    // Если у формы id="goToNewPage" - делаем:
                    ...авторский код, рабочий)
                        break;
                    // Если у формы id="popupResult" - делаем:
                    ...авторский код, рабочий)
                        break;
                }
                return false;
            }
        })
    }

    // Запускаем механизм валидации форм, если у них есть класс .js-form
    $('.js-form').each(function() {
        valEl($(this));
    });
    
});

 

Edited by mccol
Link to post
Share on other sites

35 минут назад, mccol сказал:

вынужден удалить некоторый код из-за авторских прав, там где

 

Эм..а этот Ваш "авторский код" на боевом сайте тоже скрывать будете? 

Поверьте на форуме Ваш код никому не нужен, и раз Вы уже пишите о помощью стоит выкладывать все файлы, в том числе и success.php

 

А если по делу, то 

35 минут назад, mccol сказал:

<form action="/catalog/view/theme/theme765/success.php" class="js-form" id="popupResult">

Вы отправляете форму на обычный php файл, который не связан с OC(хотя только Вам известно что в нем происходит)

Если хотите чтобы слалось как положено, чтобы почта и все настройки бралась из админки ОС нужно создавать в контроллере свой файл.

 

Примерно вот так у Вас должен выглядеть ajax запрос

$('индентификатор формы').submit(function(e){
		var form = $(this);
	    $.ajax({
	     	url: 'index.php?route=common/send_email',
	      	type: 'post',
	      	data: form.serialize(),
	      	success: function(data) {
	        	...
	    	}
	    })
	    e.preventDefault();
	})

Где index.php?route=common/send_email - путь к файлу обработчика, расположение файла catalog/controller/common/send_email.php

 

Ну и сам файл send_email.php  выглядит вот так

<?php  
class ControllerCommonSendEmail extends Controller {
	public function index() {

		if ($this->request->server['REQUEST_METHOD'] == 'POST') {

			$subject = 'Текст заголовка';
			$text = 'Текс сообщения';

			$mail = new Mail();
			$mail->protocol = $this->config->get('config_mail_protocol');
			$mail->parameter = $this->config->get('config_mail_parameter');
			$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
			$mail->smtp_username = $this->config->get('config_mail_smtp_username');
			$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
			$mail->smtp_port = $this->config->get('config_mail_smtp_port');
			$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');

			$mail->setTo($this->config->get('config_email'));
			$mail->setFrom($this->config->get('config_email'));
			$mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
			$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
			$mail->setText($text);

			$mail->send();
		}
	}
		
}

 

Думаю, что не составит труда разобраться и подставить свои данный в отправку.

А если тяжело будет понять как получить данные в контролере, то посмотрите как это сделано в файле catalog/controller/information/contact.php

Link to post
Share on other sites

Огромное спасибо за ответ! Конечно, я понимаю, что "мой" код тут никому не нужен, просто я получил его от структуры, от которой очень зависим, а там очень жестко относятся к таким вещам...

 

подскажите, пожалуйста, как мой кусок кода

$(document).ready(function() {
    $('[data-submit]').on('click', function(e) {
        e.preventDefault();
        $(this).parent('form').submit();
    })

соединить с вашим?

$('индентификатор формы').submit(function(e){
		var form = $(this);
	    $.ajax({
	     	url: 'index.php?route=common/send_email',
	      	type: 'post',
	      	data: form.serialize(),
	      	success: function(data) {
	        	...
	    	}
	    })
	    e.preventDefault();
	})

ибо дьявол скрывается в деталях)

спасибо!

Link to post
Share on other sites

2 часа назад, mccol сказал:

как мой кусок кода

 

2 часа назад, mccol сказал:

соединить с вашим?

никак

подставить в код @Bn174uk  идентификатор формы и  в success дописать что нужно

Link to post
Share on other sites

3 часа назад, mccol сказал:

...авторский код, рабочий)

да, вот это по взрослому

Link to post
Share on other sites

Большое спасибо за ответы, пробую.

 

Link to post
Share on other sites

ОГРОМНОЕ СПАСИБО ! Разобрался, все работает.

Только не могу понять, для чего нужно это поле и что туда можно вставлять вместо точек? Все данные из формы передаю через php. Оставил пустым, все работает.

Подскажите, пожалуйста, уже просто интересно.

success: function(data) {
	        	вот тут...
	    	}

 

Edited by mccol
Link to post
Share on other sites

2 часа назад, mccol сказал:

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

в data,  будет ответ с сервера.

на сервере обрабатываете данные, если какие ошибки, отравляете их на клиент и выводите.

или можно к примеру вывести сообщение, типа - все ок.

 

Link to post
Share on other sites

Огромное спасибо! Вопрос решен. Во всем разобрался!

Спасибо Всем, кто бесплатно тратит свое время на таких нубов, как я!!!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.