Наверх

Обработка POST-запросов

Все данные из формы, а также данные, отправленные Ajax-запросом, обрабатываются классом Модуль_action, описанным в файле modules/модуль/модуль.action.php.

Обработка подключается всегда, когда передана переменная $_POST["module"] = 'модуль';

Доступ к этому файлу идет через контроллер modules/модуль/модуль.php. Если в контроллере описана функция action(), то она определяет какую функцию в файле modules/модуль/модуль.action.php в зависимости от того, что передано в переменной $_POST["action"]. Если функция action() не описана в контроллере, то вызывается функция init() в файле modules/модуль/модуль.action.php.

Данные модулю могут быть переданы даже если он не подключен ни к одной странице сайта. Проверка на соответствие прикрепленного к странице модуля и вызванного модуля проводиться при обработке запроса, если это необходимо.

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

Класс Action

Класс Модуль_action наследует класс Action, описанный в файле includes/action.php.

Методы

Свойства

var result – полученный после обработки данных результат.

Методы

void end () – Отправляет ответ.

Функция вызывается из includes/init.php после любого вызова обработки действия в модуле.

Пример:

$module = new Feedback_action($this->diafan);
$module->action();
$module->action->end();

boolean result () – Проверяет сформирован ли ответ.

Пример:

if(empty($_POST["mail"]))
{
    
$this->result["errors"]["mail"] = "Введите e-mail.";
}

// если ответ сформирован (например, найдена ошибка в передаваемых данных),
// останавливаем выполнение функции обработки
if ($this->result())
    return;

void check_user () – Проверяет авторизован ли пользователь на сайте.

Пример:

// проверяем авторизован ли пользователь
$this->check_user();

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

void check_user_hash () – Проверяет хэш пользователя.

Пример:

// проверяем верен ли хэш пользователя
$this->check_user_hash();

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

void empty_required_field (array $config) – Проверяет на заполнение обязательных полей.

  • array $config: настройки функции: params поля формы, prefix префикс

Если в форме указаны поля, требующие обязательного заполнения, то корректность ввода может быть проверена этой функцией. Список требующих проверки полей должен быть передан в виде аргумента.

Пример:

// получаем поля формы обратной связи
$params = $this->model->get_params(array("module" => "feedback", "where" => "site_id=".$site_id));

// проверяем заполнены ли обязательные поля
$this->empty_required_field(array("params" => $params));

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

void insert_values (array $config) – Добавляет значение полей формы в базу данных.

  • array $config: настройки функции: id номер элемента, table таблица, params поля формы, multilang значения переводятся

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

Пример:

// modules/cart/cart.action.php
// запись данных при оформлении заказа в модуле «Корзина»
$this->insert_values(array("id" => $order_id, "table" => "shop_order", "params" => $params));

boolean check_site_id () – Проверяет корректность номера страницы сайта..

Пример:

// проверяем правильно ли передан номер страницы сайта,
// к которой подключен модуль
$this->check_site_id();

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

void check_captcha () – Проверяет правильность капчи.

При вызове функции она обращается к методам класса «Captcha» для проверки правильности ввода. Если каптча введена неверно, будет возвращено сообщение с ошибкой.

Пример:

// проверяем правильно ли введен защитный код
$this->check_site_id();

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

void update_values (array $config) – Обновляет значение полей формы в базу данных.

  • array $config: настройки функции: id номер элемента, table таблица, params поля формы, prefix префикс, multilang значения переводятся, no_empty_param_ids массив не требующих заполнения параметров

Пример:

// modules/usersettings/usersettings.action.php
// изменение данных текущего пользования при редактировании профиля через личный кабинет
$this->update_values(array("id" => $this->diafan->_users->id, "table" => "users", "params" => $params));

boolean valid_email (string $email, string $field) – Проверка e-mail на валидность.

  • string $email: e-mail
  • string $field: название поля в массиве $_POST

Используется сторонний файл includes/validate.php. При неудачной проверке будет возвращено значение TRUE, и добавлено сообщение о неверном формате электронной почты.

Пример:

// modules/faq/faq.action.php
// проверка правильности формата введенной электронной почты при отправке вопроса; модуль «Вопрос-ответ»
$this->valid_email($_POST['email'], "email");

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

boolean valid_phone (string $phone, string $field) – Проверка телефона на валидность.

  • string $phone: телефон
  • string $field: название поля в массиве $_POST

Пример:

// modules/registration/registration.action.php
// проверка правильности формата введенного телефона при регистрации пользователя
$this->valid_phone($_POST['phone'], "phone");

// если найдена ошибка, останавливаем выполнение функции обработки
if ($this->result())
    return;

boolean valid_url (string $url, string $field) – Проверка ссылки на валидность.

  • string $url: ссылка
  • string $field: название поля в массиве $_POST

array get_attributes (array $attributes) – Задает неопределенным атрибутам шаблонного тега значение по умолчанию.

  • array $attributes: массив определенных атрибутов

void action () – Обрабатывает полученные данные из формы.

void action () – Обрабатывает полученные данные из формы.

Ваши комментарии и дополнения

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