На основе данных из $_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 / false
  • getWord - применяет фильтр 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();

 

Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

88 Всего расширений
11 Категорий
375 Выпущено версий
363100 Всего скачиваний
Корзина
Корзина пуста