MV framework logo
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Документация
Скачать .zip версия 3.2.0 от 25.12.2024
  • Архитектура
  • Философия
  • Админ панель
  • Поддержка
  • Обратная связь
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
Документация
Начало работы
  • Установка и запуск
  • Структура папок
  • Запуск простого сайта
  • Предустановленные модели
  • SQLite начало работы
  • Системные настройки
  • Миграции
  • Отладка
Модели
  • Общие принципы моделей
  • Типы данных
  • Настройка модели
  • Простые модели
  • Внешние ключи
  • Деревья
  • Многие ко многим
  • Группа
  • Управление записями
  • Управление простыми моделями
  • Дополнительные возможности
Шаблоны и маршрутизация
  • Общие принципы шаблонов
  • Объект класса Router
  • Объект MV
  • Создание нового шаблона
  • Вывод данных в шаблоне
  • Объект класса Record
  • Файлы и изображения
  • Дата и время
  • Редиректы и Http
  • Отправка email
  • Специальные методы
Формы
  • Создание форм
  • Настройка полей формы
  • Валидация полей формы
  • Безопасность форм
  • Работа с данными формы
  • Использование данных из моделей
  • Методы форм
SQL запросы
  • Конструктор запросов
  • Прямые запросы
  • Постраничная разбивка
  • Сортировка
  • Фильтрация
Дополнительно
  • AJAX
  • Плагины
  • Кэширование
  • Безопасность
  • Дополнения к административной панели
MV tracker

AJAX

Для добавления AJAX функционала в MV рекомендуется придерживаться следующих правил:

  1. Если проект развернут в поддиректории, добавить в JavaScript путь от корня до проекта.
  2. Создать маршрут с читабельным и понятным URL.
  3. В шаблоне, на который придет URL, использовать методы класса Http.

Передаем в JavaScript полный путь до проекта в файл views/main-header.php добавляем строку с путем.

<script type="text/javascript"> const rootPath = '<? echo $mv -> root_path; ?>'; </script>

Добавляем маршрут и создаем нужный файл шаблона, на который пойдет AJAX запрос.

//Файл config/routes.php

'/ajax/form/feedback' => 'ajax/feedback-form.php'

В JavaScript файле добавляем код отправки AJAX запроса, для примера на JQuery.

$.ajax(
{
    type: 'POST',
    dataType: 'json',
    url: rootPath + 'ajax/form/feedback',
    data: $('#feedback-form').serialize(),
    success: function(data)
    {
        //Обработка ответа (для формы)
        if(data.valid)
        {
            ...
        }
        else
        {
            //Ошибки формы в виде массива
            data.errors.fields

            //Единый html с ошибками формы
            data.errors.all
        }
    }
});

В файле шаблона проверяем запрос и подготавливаем ответ в виде JSON либо HTML, если генерируем фрагмент HTML кода для вставки на страницу.

//Файл views/ajax/feedback-form.php

//Сначала проверяем что пришел POST AJAX запрос, если нет, то exit
Http::isAjaxRequest('post', true);

//Проверяем наличие параметров в запросе, генерируем HTML
if(isset($_POST['param']))
{
    $html = $mv -> model -> method();

    ...
}

//Или например обрабатываем форму
$form -> submit() -> validate();

//В самом конце возвращаем ответ в формате JSON
$json = ['success' => true];
Http::responseJson($json);

//Другие форматы ответа
Http::responseXml($xml);
Http::responseHtml($html);
Http::responseText($text);

Если в AJAX запросе обрабатывается форма, то рекомендуется в качестве ответа возвращать JSON объект с результатом метода формы getState().

Метод getState() вернет подробное состояние формы с массивом ошибок если они возникли при валидации.
//Файл views/ajax/feedback-form.php

Http::isAjaxRequest('post', true);

$form = new Form('Feedback');
$form -> useAjaxTokenCSRF() -> useJqueryToken();

$form -> submit() -> validate();

if($form -> isValid())
{
    ...
}

Http::responseJson($form -> getState());

Если в ответе к состоянию формы нужно добавить дополнительные данные, то используется метод addStateValue().

//Файл views/ajax/feedback-form.php

if($form -> isValid())
{
    ...
    
    $form -> addStateValue('link', 'https://...');
}

Http::responseJson($form -> getState());

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

Фильтрация

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

Плагины
MV workshop banner
MV tracker

© 2014-2025, MV framework team

English MV tracker project Github

Поделиться