На основе данных из $_GET
, $_POST
порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется объект Input, который мы получаем из Приложения Joomla.
Приведу пример, часто использующийся при разработке шаблонов Joomla
<?php
use Joomla\CMS\Factory;
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();
// Detecting Active Variables
$option = $input->get('option', '','');
$view = $input->get('view', '','');
$layout = $input->getCmd('layout', '');
$task = $input->getString('task', '');
$itemid = $input->getInt('Itemid', '');
В методе $input->get()
2-й аргумент - это значение по умолчанию на случай, если данных не обнаружено. 3-й аргумент - параметры фильтрации данных - будьте с ним внимательны.
Например, вы хотите получить данные, отправленные на ендпоинт в виде JSON.stringify
.
<?php
$input->json->get('title', '', 'RAW')
// ИЛИ
$data = $input->json->getArray();
Если вы уверены, что данные должны быть именно в $_POST
и нигде более, то получайте их именно оттуда
<?php
$input->post->get('title', '', 'RAW')
Подробнее в файле libraries/vendor/joomla/input/src/Input.php
.
Что умеет объект Input в Joomla?
Небольшая шпаргалка по тому, что вообще объект Input в Joomla умеет.
Свойства объекта Input:
get
- суперглобальный массив$_GET
post
- суперглобальный массив$_POST
request
- суперглобальный массив$_REQUEST
server
- суперглобальный массив$_SERVER
env
-$_ENV
, переменные окруженияfiles
-$_FILES
, загруженные файлыcookie
- здесь собственно печеньки 🍪json
- свойство для удобной работы с json-данными
Методы объекта Input
:
Получаем значения с нужным нам типом данных:
getInt
- применяет фильтр Int, целое числоgetUint
- применяет фильтр Uint, целое положительное число (-1823 не получим)getFloat
- применяет фильтр Float, число с плавающей точкой, десятичная дробьgetBool
- применяет фильтр Bool, логическое true / falsegetWord
- применяет фильтр Word, в значении только латинские буквы и нижнее подчеркиваниеgetAlnum
- alphanumeric string, сочетание букв и цифр. Полезно для токенов.getCmd
- применяет фильтр Cmd к значению. Только латинские буквы, нижнее подчеркивание, тире и точка. Убирает ведущие точки.getBase64
- применяет фильтр Base64 к значению. Только латинские буквы, косая черта, знак плюса и знак равно.getString
- применяет фильтр String к значению. Конвертирует в чистую строку, убирает все теги и атрибуты.getHtml
- применяет фильтр Html к значению. Конвертирует в строку, убирает все HTML теги и атрибуты, кроме тех, что находятся в белом списке разрешенных тегов Joomla (в общих настройках Joomla)getPath
- применяет фильтр Path к значению. Конвертирует в строку и валидирует как путь до папки или файла (например path/to/file.png или path/to/dir). Не принимает абсолютный путь или путь, который заканчивается косой чертой.getUsername
- применяет фильтр Username к значению. Удаляет все невалидные для имени пользователя символы (\x00, -, \x1F, \x7F, <, >, ", ', %, &)getRaw
- возвращает нефильтрованные данные. Небезопасно!
Получить несколько значений сразу:
<?php
use Joomla\CMS\Factory;
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();
$data = $input->getArray();