Валидация параметров запроса
За работу с входящими параметрами отвечает компонент Input
, получить объект которого можно посредством вызова
метода приложения bff::input()
, в контексте модулей и дополнений также доступен вариант $this->input->
Компонент работает со всеми основными методами запроса: GET, POST, COOKIE, SERVER, и предоставляет соответствующие методы доступа к данным:
$this->input->get('name');
$this->input->post('name');
$this->input->cookie('name');
$this->input->server('name');
Дополнительно есть возможность указать смешанный вариант:
// получаем данные из GET запроса, если не нашли пробуем POST
$this->input->getpost('name');
// наоборот
$this->input->postget('name');
Вторым параметром в данных методах указывается тип преобразования данных:
// Значение будет приведено к беззнаковому целому числу
$id = $this->input->get('id', TYPE_UINT);
// boolean
$active = $this->input->get('active', TYPE_BOOL);
// string
$string = $this->input->get('name', TYPE_STR);
Доступны следующие типы преобразования:
-
TYPE_NOCLEAN
- без изменений -
TYPE_BOOL
- boolean (true/false) -
TYPE_INT
- integer (целое число) -
TYPE_UINT
- unsigned integer (беззнаковое целое число) -
TYPE_NUM
- number (число с плавающей точкой, float/double) -
TYPE_UNUM
- unsigned number (беззнаковое число с плавающей точкой) -
TYPE_UNIXTIME
- unix datestamp (unsigned integer) (дата в Unix формате) -
TYPE_STR
- trimmed string (строка без пробелов в начале и конце) -
TYPE_NOTRIM
- string - no trim (строка с допустимыми пробелами в начале и конце) -
TYPE_NOHTML
- trimmed string (строка обработанная htmlspecialchars) -
TYPE_ARRAY
- array (массив) -
TYPE_BINARY
- binary string (бинарная строка, например содержимое бинарного файла) -
TYPE_NOHTMLCOND
- trimmed string with HTML made safe if determined to be unsafe -
TYPE_NOTAGS
- trimmed string, stripped tags (строка обработанная strip_tags) -
TYPE_DATE
- date (текстовое представление даты) -
TYPE_PRICE
- price (цена с приведением к виду 0.5) -
TYPE_TEXT
- plain text (безопасная строка обработанная strip_tags с поддержкой активных ссылок) -
TYPE_JSON
- json (массив на основе JSON строки) -
TYPE_PASS
- password (парольная фраза с допустимыми пробелами в начале и конце)
Также возможно приведение данных к массиву определенного типа, для этого используйте:
-
TYPE_ARRAY_BOOL
-
TYPE_ARRAY_INT
-
TYPE_ARRAY_UINT
-
TYPE_ARRAY_NUM
-
TYPE_ARRAY_UNUM
-
TYPE_ARRAY_UNIXTIME
-
TYPE_ARRAY_STR
-
TYPE_ARRAY_NOTRIM
-
TYPE_ARRAY_NOHTML
-
TYPE_ARRAY_ARRAY
-
TYPE_ARRAY_BINARY
-
TYPE_ARRAY_NOHTMLCOND
-
TYPE_ARRAY_NOTAGS
-
TYPE_ARRAY_DATE
-
TYPE_ARRAY_PRICE
-
TYPE_ARRAY_TEXT
Также есть удобные методы проверки на соответствие заданному формату:
$email = $this->input->get('email');
if ( ! $this->input->isEmail($email)) {
$this->errors->set(_t('users', 'Email адрес был указан некорректно'));
}
Проверка номер телефона:
$phone = $this->input->get('phone');
if ( ! $this->input->isPhoneNumber($phone)) {
$this->errors->set(_t('users', 'Номер телефона был указан некорректно'));
}