Jump to content

Recommended Posts

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

Взял код стандартной обратной связи симпла, убрал строку "сообщения" оставил только "Имя" и "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.
 
Как выглядит, меня в принципе устраивает. Но что дальше делать, я не знаю. Первое это то что строку ту что я отвел под "телефон" нужно еще подредактировать чтобы форма отправляла только цифры
И второе, как эту форму связать с работой сайта, чтобы при нажатии отправить мне на почту приходило уведомление, или хотя бы в админке в разделе "обратная связь" появлялись уведомления.
 
 
Link to post
Share on other sites

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

Бесплатно за вас никто делать доработку не будет, так что либо сами изучаете либо платите специалисту за работу. Всё просто.
Link to post
Share on other sites

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

Вариант 1.

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

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

Вариант 2.

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

 

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

Link to post
Share on other sites

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

Интересно как ты дошёл до такого умозаключения?
Link to post
Share on other sites

В папке 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,и в админке для вывода.

Edited by MStyle28
Link to post
Share on other sites

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

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

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

 

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

Link to post
Share on other sites

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

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

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

 

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

Я долго ждал недовольства Корса :D
Link to post
Share on other sites

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

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

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

 

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

 

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

 

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

Link to post
Share on other sites

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

 

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

Это дешевизна, проверка должна быть как на фронт так и бек ендах!
Link to post
Share on other sites

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

 

 

ну просто в 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

Edited by shooroop
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
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.

Loading...
×
×
  • Create New...