AJAX форма на jQuery
В файле нужного нам шаблона создаем форму через объект. Можно также сделать форму просто html кодом, главное, чтобы названия полей совпадали с теми, которые потом будут использоваться далее в файле views/ajax/request.php
//Создаем ajax csrf токен до любого вывода html на странице $ajax_csrf_token = Form :: createAndDisplayAjaxTokenCSRF(); $fields = [["Имя", "char", "name", ["required" => true]), ["Телефон", "phone", "phone"], ["Email", "email", "email", ["required" => true]), ["Комментарий", "text", "comment"]); $form = new Form($fields); include $mv -> views_path."main-header.php";include $mv -> views_path."main-footer.php";
В файле media/js/utils.js пишем код на jQuery для обработки формы.
$(document).ready(function() { $("#send-request").on("click", function() { $.ajax({ type: "POST", dataType: "html", url: rootPath + "views/ajax/request.php", data: $("#modal-request form").serialize(), success: function(data) { $("#modal-request div.form-errors").remove(); if(data != "done") $(data).insertBefore($("#modal-request form")); else { var message = "Ваш запрос был успешно отправлен."; $("#modal-request form").replaceWith(""); } } }); }); });" + message + "
Создаем файл для обработки AJAX запроса views/ajax/request.php
//Проверяем, что запрос был отправлен через AJAX jQuery if(!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) exit(); include "../../config/autoload.php"; $mv = new Builder(); if(!empty($_POST)) { $fields = [["Имя", "char", "name", ["required" => true]), ["Телефон", "phone", "phone"], ["Email", "email", "email", ["required" => true]), ["Комментарий", "text", "comment"]); $form = new Form($fields); //Токен проверяется автоматически, главное чтобы он был выведен в html форме $form -> useAjaxTokenCSRF(); $form -> getDataFromPost() -> validate(); if($form -> isValid()) { $message = $form -> composeMessage(); Email :: send("email@example.com", "Сообщение с сайта", $message); echo "done"; } else echo $form -> displayErrors(); }
Предыдущий раздел
Форма с загрузкой файла