Павел Соколов


Павел Соколов

  • Павел Соколов Павел Соколов 29 августа 2016 12:33 #

    Вместо 'email от кого отправляем' вставьте реальный адрес электронной почты, который позволит отправить письмо с Вашего сервера, а вместо www.site.ru адрес Вашего сайта.

    То же самое вместо 'email кому отправляем'.

    в ответ на Обращение к методу со стороны ajax

  • Павел Соколов Павел Соколов 29 августа 2016 10:40 #

    Раз тема спусть столько времени актуальна, рассказываю как реализовать отправку формы по AJAX без перезагрузки страницы на примере формы быстрого заказа в один клик.

    Форма в шаблоне карточки товара:

    <div id="res_by_me">
        {if $wa->post("phone") and shopCustom::sendBuyMeEmail($wa->post("phone"), $wa->post("title"), $wa->post("url"), $wa->post("code"))}
            {* ничего не делаем *}
        {else}
            <form method="post" action="" id="buyme_send_form">
                <label class="fs11 mb10">Оставьте номер телефона и Ваш заказ будет оформлен. Мы свяжемся с Вами для уточнения деталей доставки.</label>
    
    	    {* ниже размещаем скрытые дополнительные поля, которые мы хотим отправить на email *}
    	    {* например, Наименование товара, Урл откуда отправлена форма и ID товара *}
    	    {* эти же поля необходимо передать в метод shopCustom::sendBuyMeEmail() в качестве параметров *}
    	    <input type="hidden" name="title" value="{$product.name|escape}">
                <input type="hidden" name="url" value="{$wa->currentUrl(true)}">
                <input type="hidden" name="code" value="{$product.id}">
    
                {* номер телефона *}
                <input type="text" placeholder="Номер телефона" name="phone">
                <button type="submit">Заказать</button>
            </form>
        {/if}
    </div>

    Скрипт для отправки:

    $("#buyme_send_form").submit(function(){
        var form = $(this);
        var data = form.serialize();
        $.ajax({
            type: 'POST',
            url: location.href,
            data: data,
            success: function(response){
                $('#res_by_me').html('Заказ уже у нас. Мы свяжемся с Вами.'); //вместо формы пишем сообщение
    	}
        });
        
        return false; //отключаем перезагрузку страницы
    });

    Теперь в соответствии с инструкцией https://support.webasyst.ru/170/custom-helper/ создаем класс shopCustom и метод sendBuyMeEmail(). Привожу полный код файла /wa-apps/shop/lib/classes/shopCustom.class.php

    Файл /wa-apps/shop/lib/classes/shopCustom.class.php

    <?php
    class shopCustom
    {
        public static function sendBuyMeEmail($phone, $title, $url, $code){
    
            //не забудьте проверить данные!!!
    
            $body = $phone ."\n". $title ."\n Код товара:". $code ."\n". $url; //формируем тело сообщения по вашему желанию
            $subject = 'БЫСТРЫЙ ЗАКАЗ';
            $mail_message = new waMailMessage($subject, $body, 'text/plain');
            $mail_message->setFrom('email от кого отправляем', 'www.site.ru');
            $mail_message->setTo('email кому отправляем', 'www.site.ru');
            $mail_message->send();
    
            return true;
        }
    }

    в ответ на Обращение к методу со стороны ajax

  • Павел Соколов Павел Соколов 15 апреля 2016 04:44 #

    из /wa-apps/shop/lib/classes/shopNotifications.class.php

    в ответ на Обращение к методу со стороны ajax

  • Павел Соколов Павел Соколов 20 мая 2015 08:01 #

    Спасибо. Оба замечания учел, все работает!

    в ответ на Обращение к методу со стороны ajax

  • Павел Соколов Павел Соколов 20 мая 2015 06:37 #

    Решено.

    Добавил <input type="hidden" value="call_me" name="send">

    Спасибо за помощь!


    в ответ на Обращение к методу со стороны ajax

  • Павел Соколов Павел Соколов 20 мая 2015 05:46 #

    Идея понятна, но не получается :(


    Вот такая простейшая форма

    {if $wa->post("send") and $wa->shop->sendEmail($wa->post("phone"))}

    {else}

    <form method="post" action="" id="callme_send_form">

    <input type="text" placeholder="Номер телефона" name="phone">

    <input type="submit" value="Перезвоните мне" name="send">

    </form>

    {/if}


    За ней скрипт

    $(document).ready(function() {

    $("#callme_send_form").submit(function(){

    var form = $(this);

    var data = form.serialize();

    $.ajax({

    type: 'POST',

    url: location.href,

    data: data

    });

    return false;

    });

    });


    Без скрипта письмо приходит, со скриптом - нет.

    в ответ на Обращение к методу со стороны ajax