На основе данных из $_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- суперглобальный массив$_GETpost- суперглобальный массив$_POSTrequest- суперглобальный массив$_REQUESTserver- суперглобальный массив$_SERVERenv-$_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();