MV framework logo
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Скачать Версия 2.6 от 07.10.2022
Документация
  • Архитектура
    • Философия
    • Технологии
    • CMF
    • История версий
  • Админ панель
  • Поддержка
  • Обратная связь
  • Примеры кода
    • Новостная лента
    • Слайдер с баннерами
    • Список с фильтрацией
    • Форма с загрузкой файла
    • AJAX форма на jQuery
    • Вопросы и ответы
    • Каталог с товарами
    • Авторизация пользователя
    • Регистрация пользователя
    • Личный кабинет пользователя
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
Модели (models)
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны (views) и маршрутизация (routes)
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Index, default и 404 шаблоны
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Правила проверки полей формы
  • Проверка полей формы
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
  • Загрузка из csv файлов
Сессии и безопасность
  • Работа с сессиями
  • AJAX
  • Кэширование
  • Безопасность
  • Отладка
Плагины
  • Общие принципы плагинов
  • Дополнения к административной панели

AJAX форма на jQuery

В файле нужного нам шаблона создаем форму через объект. Можно также сделать форму просто html кодом, главное, чтобы названия полей совпадали с теми, которые потом будут использоваться далее в файле views/ajax/request.php

<?
//Создаем ajax csrf токен до любого вывода html на странице
$ajax_csrf_token = Form :: createAndDisplayAjaxTokenCSRF();

$fields = array(array("Имя", "char", "name", array("required" => true)),
                array("Телефон", "phone", "phone"),
                array("Email", "email", "email", array("required" => true)),
                array("Комментарий", "text", "comment"));

$form = new Form($fields);

include $mv -> views_path."main-header.php";
?>
<script type="text/javascript"> var rootPath = "<? echo $mv -> root_path; ?>"; </script>
<script type="text/javascript" src="<? echo $mv -> media_path; ?>js/jquery.js"></script>
<script type="text/javascript" src="<? echo $mv -> media_path; ?>js/utils.js"></script>

<div id="modal-request">
    <form>
        <? echo $form -> displayVertical(); ?>
        <div class="form-buttons">
            <? echo $ajax_csrf_token; ?>
            <button id="send-request">Отправить</button>
        </div>
    </form>
</div>

<? 
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("<div class=\"form-success\"><p>" + message + "</p></div>");
                }
            }
        });
    });
});

Создаем файл для обработки 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 = array(array("Имя", "char", "name", array("required" => true)),
                    array("Телефон", "phone", "phone"),
                    array("Email", "email", "email", array("required" => true)),
                    array("Комментарий", "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();
}
?>

Предыдущий раздел

Форма с загрузкой файла

Следующий раздел

Вопросы и ответы

© 2012-2023, MV framework team

English MV task tracker system Лицензия

Поделиться