Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

Взял код стандартной обратной связи симпла, убрал строку "сообщения" оставил только "Имя" и "email" сменил на телефон. Скрипт стал выглядеть так:

 

<h1>Обратная связь</h1>
<form class="form feedback_form" method="post">
        
        <label>Имя</label>
        <input data-format=".+" data-notice="Введите имя" value="" name="name" maxlength="255" type="text">
        <label>Ваш телефон</label>
        <input data-format="email" data-notice="Введите ваш телефон" value="" name="email" maxlength="255" type="text">
        <input class="button right" type="submit" name="feedback" value="Отправить">
    </form>
 
Вставил его в описание товара через html.
 
Как выглядит, меня в принципе устраивает. Но что дальше делать, я не знаю. Первое это то что строку ту что я отвел под "телефон" нужно еще подредактировать чтобы форма отправляла только цифры
И второе, как эту форму связать с работой сайта, чтобы при нажатии отправить мне на почту приходило уведомление, или хотя бы в админке в разделе "обратная связь" появлялись уведомления.
 
 
Ссылка на сообщение
Поделиться на другие сайты

может у кого-то есть более обширный ответ))?

Бесплатно за вас никто делать доработку не будет, так что либо сами изучаете либо платите специалисту за работу. Всё просто.
Ссылка на сообщение
Поделиться на другие сайты

Более обширный:

Вариант 1.

1. Изучить полностью, как работает стандартная форма обратной связи (view/FeedbackView.php, api/Feedbacks.php, feedback.tpl) или форма комментария на странице товара.

2. Применить полученные знания на странице товара (view/ProductView.php, product.tpl), написав собственный добавочный программный код.

Вариант 2.

Изыскать средства для оплаты работы мастера-специалиста.

 

Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого.

Ссылка на сообщение
Поделиться на другие сайты

Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого.

Интересно как ты дошёл до такого умозаключения?
Ссылка на сообщение
Поделиться на другие сайты

В папке ajax создаём файл feedbacks.php с содержанием:

<?php
	session_start();
	require_once('../api/Simpla.php');
	$simpla = new Simpla();
	
	$feedback = new StdClass;
	$feedback->name = $simpla->request->post('name', 'string');
	$feedback->phone = $simpla->request->post('phone');
 
	$feedback_id = $simpla->feedbacks->add_feedback($feedback);
	$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

Вставляем в любом месте форму:

<form class="CallBack_form" method="post">
                    <div class="form-group">
                        <label for="callback_name">Ваше имя:</label>
                        <input type="text" id="callback_name" class="form-control" required="" name="callback_name">
                    </div>
                    <div class="form-group">
                        <label for="callback_phone">Телефон:</label>
                        <input type="text" id="callback_phone" class="form-control" required="" name="callback_phone">
                    </div>
                    <input type="submit" class="btn btn-default btn-lg" value="Отправить">
                </form>

И js обработчик:

 $(document).on('submit', '.CallBack_form', function(e) {
    	e.preventDefault();
    	$.ajax({
    		type: "post",
    		url: "/ajax/feedbacks.php",
    		data: {
    			name: $('#callback_name').val(),
    			phone: $('#callback_phone').val()
    		},
    		dataType: 'json'
    	});
    	$(".CallBack_form").html("<div class='form-header'><div class='text'><div class='title'>Заявка принята</div></div><div class='form_result success'>Спасибо! В ближайшее время мы с Вами свяжемся!</div></div>");
    });

 

P.S. Вёрстку придется под себя корректировать в любом случае.А и в базу в s_feedbacks добавьте phone,и пропишите его в api,и в админке для вывода.

Изменено пользователем MStyle28
Ссылка на сообщение
Поделиться на другие сайты

В файле ajax/feedbacks.php последняя строка

$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

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

 

И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта...

Ссылка на сообщение
Поделиться на другие сайты

В файле ajax/feedbacks.php последняя строка

$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

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

 

И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта...

Я долго ждал недовольства Корса :D
Ссылка на сообщение
Поделиться на другие сайты

В файле ajax/feedbacks.php последняя строка

$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

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

 

И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта...

 

Какие ошибки при заполнении формы? Там required стоит в обоих полях.

 

И в целом, выложи своё решение :)

Ссылка на сообщение
Поделиться на другие сайты

Какие ошибки при заполнении формы? Там required стоит в обоих полях.

 

И в целом, выложи своё решение :)

Это дешевизна, проверка должна быть как на фронт так и бек ендах!
Ссылка на сообщение
Поделиться на другие сайты

Это дешевизна, проверка должна быть как на фронт так и бек ендах!

 

 

ну просто в indexview.php после

 

function fetch()

{

 

if($this->request->method('post') && $this->request->post('feedback'))
		{
			$feedback->name         = $this->request->post('name');
			$feedback->email        = $this->request->post('email');
$feedback->phone = $this->request->post('phone');
			$feedback->message      = $this->request->post('message');
			$captcha_code           = $this->request->post('captcha_code');
			
			$this->design->assign('name',  $feedback->name);
			$this->design->assign('email', $feedback->email);
$this->design->assign('phone', $feedback->phone);
			$this->design->assign('message', $feedback->message);
			
			if(empty($feedback->name))
				$this->design->assign('error', 'empty_name');
			elseif(empty($feedback->email))
	            elseif(empty($feedback->email))
                $this->design->assign('error', 'empty_phone');			$this->design->assign('error', 'empty_phone');
	
		elseif(empty($feedback->message))
				$this->design->assign('error', 'empty_text');
			elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
			{
				$this->design->assign('error', 'captcha');
			}
			else
			{
				$this->design->assign('message_sent', true);
				
				$feedback->ip = $_SERVER['REMOTE_ADDR'];
				$feedback_id = $this->feedbacks->add_feedback($feedback);
				
				// Отправляем email
				$this->notify->email_feedback_admin($feedback_id);				
				
				// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
				unset($_SESSION['captcha_code']);
								
			}

и добавить поле в бд phone

Изменено пользователем shooroop
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...