Advokat Posted March 31, 2018 Report Share Posted March 31, 2018 Добрый день форумчане! Сегодня задумал сделать форму обратной связи на карточке товара, а именно после описания.Взял код стандартной обратной связи симпла, убрал строку "сообщения" оставил только "Имя" и "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. Как выглядит, меня в принципе устраивает. Но что дальше делать, я не знаю. Первое это то что строку ту что я отвел под "телефон" нужно еще подредактировать чтобы форма отправляла только цифрыИ второе, как эту форму связать с работой сайта, чтобы при нажатии отправить мне на почту приходило уведомление, или хотя бы в админке в разделе "обратная связь" появлялись уведомления. Quote Link to post Share on other sites
Noxter Posted March 31, 2018 Report Share Posted March 31, 2018 view/FeedbackView.php view/ProductView.php Quote Link to post Share on other sites
Advokat Posted March 31, 2018 Author Report Share Posted March 31, 2018 может у кого-то есть более обширный ответ))? Quote Link to post Share on other sites
Noxter Posted March 31, 2018 Report Share Posted March 31, 2018 может у кого-то есть более обширный ответ))?Бесплатно за вас никто делать доработку не будет, так что либо сами изучаете либо платите специалисту за работу. Всё просто. Quote Link to post Share on other sites
phukortsin Posted April 1, 2018 Report Share Posted April 1, 2018 Более обширный:Вариант 1.1. Изучить полностью, как работает стандартная форма обратной связи (view/FeedbackView.php, api/Feedbacks.php, feedback.tpl) или форма комментария на странице товара.2. Применить полученные знания на странице товара (view/ProductView.php, product.tpl), написав собственный добавочный программный код.Вариант 2.Изыскать средства для оплаты работы мастера-специалиста. Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого. Quote Link to post Share on other sites
Noxter Posted April 1, 2018 Report Share Posted April 1, 2018 Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого.Интересно как ты дошёл до такого умозаключения? Quote Link to post Share on other sites
MStyle28 Posted April 1, 2018 Report Share Posted April 1, 2018 Пишите в skype - mstyle28 Quote Link to post Share on other sites
MStyle28 Posted April 1, 2018 Report Share Posted April 1, 2018 (edited) В папке 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 April 1, 2018 by MStyle28 Quote Link to post Share on other sites
phukortsin Posted April 1, 2018 Report Share Posted April 1, 2018 В файле ajax/feedbacks.php последняя строка$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));очень странная. По-моему, явно бессмысленое действие, которое даст ошибку. И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта... Quote Link to post Share on other sites
Noxter Posted April 1, 2018 Report Share Posted April 1, 2018 В файле ajax/feedbacks.php последняя строка$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));очень странная. По-моему, явно бессмысленое действие, которое даст ошибку. И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта...Я долго ждал недовольства Корса Quote Link to post Share on other sites
MStyle28 Posted April 1, 2018 Report Share Posted April 1, 2018 В файле ajax/feedbacks.php последняя строка$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));очень странная. По-моему, явно бессмысленое действие, которое даст ошибку. И в целом - слишком просто. Ошибки при заполнении формы (например, не ввел телефон) никак не обрабатываются в принципе. Такое хорошо как простенький урок для начинающих по работе с формой, а не код для работающего сайта... Какие ошибки при заполнении формы? Там required стоит в обоих полях. И в целом, выложи своё решение Quote Link to post Share on other sites
Noxter Posted April 1, 2018 Report Share Posted April 1, 2018 Какие ошибки при заполнении формы? Там required стоит в обоих полях. И в целом, выложи своё решение Это дешевизна, проверка должна быть как на фронт так и бек ендах! Quote Link to post Share on other sites
shooroop Posted April 1, 2018 Report Share Posted April 1, 2018 (edited) Это дешевизна, проверка должна быть как на фронт так и бек ендах! ну просто в 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 April 1, 2018 by shooroop Quote Link to post Share on other sites
Noxter Posted April 2, 2018 Report Share Posted April 2, 2018 Facepalm Quote Link to post Share on other sites
phukortsin Posted April 2, 2018 Report Share Posted April 2, 2018 Facepalm+1 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.