Совет по Joomla: как получать данные из суперглобальных массивов $_POST, $_GET и других?
На основе данных из $_GET
, $_POST
порой строится логика работы кода начиная от шаблона Joomla и кончая модулями и плагинами. Для работы с этими данными используется объект Input, который мы получаем из Приложения Joomla.
Приведу пример, часто использующийся при разработке шаблонов Joomla
<?php
/** @var \Joomla\CMS\Application\CMSApplication $app */
$app = Factory::getApplication();
/** @var \Joomla\Input\Input $input */
$input = $app->getInput();
// Имя параметра и его значение по умолчанию
$option = $input->get('option','');
$view = $input->get('view', 'category');
$layout = $input->getCmd('layout', 'edit');
$task = $input->getString('task', '');
$itemid = $input->getInt('Itemid', '');
В методе $input->get()
2-й аргумент - это значение по умолчанию на случай, если данных не обнаружено. 3-й аргумент - параметры фильтрации данных - будьте с ним внимательны. Например, вы хотите получить данные, отправленные на ендпоинт в виде JSON.stringify
.
<?php
/** @var \Joomla\Input\Input $input */
$input->json->get('title', '', 'RAW')
// ИЛИ
$data = $input->json->getArray();
Если вы уверены, что данные должны быть именно в $_POST и нигде более, то получайте их именно оттуда.
<?php
/** @var \Joomla\Input\Input $input */
$title = $input->post->get('title', '', 'RAW');
Подробнее в файле libraries/vendor/joomla/input/src/Input.php.