Jump to content
Sign in to follow this  
mccol

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

Recommended Posts

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

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

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

В настройках  магазина стоит почта админа с доменным именем  mail@domain.com

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

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

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

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

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

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

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

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

Edited by mccol

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


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

Share this post


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

Share this post


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();
	})

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

спасибо!

Share this post


Link to post
Share on other sites
2 часа назад, mccol сказал:

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

 

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

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

никак

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

Share this post


Link to post
Share on other sites
3 часа назад, mccol сказал:

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

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

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

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

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

 

Edited by mccol

Share this post


Link to post
Share on other sites
2 часа назад, mccol сказал:

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.