Работа с входными данными в Джумла 1.5
Для работы с переданными данными (фильтрации данных $_GET и $_POST) в Joomla 1.5 существует класс JRequest.
Пара примеров его использования:
- Получаем значение переданного параметра $title и сохраняем его в переменную:
$title = JRequest::getVar('title');
При этом, если не установлены другие параметры, то с начала и конца строки удаляться пробелы, и текст будет очищен от HTML-форматирования.
Если нам нужно еще и задать значение по умолчанию, то модернизируем код:
$title = JRequest::getVar('title', 'Значение по умолчанию');
- Если нужно явно указать, откуда брать данные (По умолчанию данные получаются из массива $_REQUEST):
$title = JRequest::getVar('title', 'Значение по умолчанию', 'get');
Возможные варианты:
- GET
- POST
- FILES
- COOKIE
- ENV
- SERVER
- REQUEST
- Иногда нужно явно указать тип переменной:
- Иногда нужно явно указать тип переменной:
$title = JRequest::getVar('title', 'Значение по умолчанию', 'get', 'string');
Так же поддерживаются следующие типы:
- int - Целочисленые значения
- float - Число с плавающей точкой
- bool - Булево значение
- word - слово
- cmd - команда
- string - строка
Для удобства вы можете использовать методы класса "JRequest" следующего типа:
- getInt
- getFloat
- getBool
- getWord
- getCmd
- getString
- get
Методы выполняют ту же самую роль что и "getVar", аргументы те же, за исключением того что нет маски и типа переменной. Метод "get" использует два параметра - название переменной и маска.
- Данный пример показывает как использовать маски фильтрации:
КОД
- 1 - JREQUEST_NOTRIM - если установлен, то пробелы по краям не обрежутся, по умолчанию пробелы отсекаются.
- 2 - JREQUEST_ALLOWRAW - если установлен, то будет отключена всякая фильтрация, при этом более высокие биты игнорируются.
- 4 - JREQUEST_ALLOWHTML - позволяет html-код. Но если установлен, то все равно будет включен фильтр безопасности по очистке html-кода.
Можно использовать несколько фильтров. Допустим нам нужно оставить пробелы по краям и не вырезать html-код. Для этого мы вписываем пятым параметром 5 (1+4), либо можно через константы - "JREQUEST_NOTRIM+JREQUEST_ALLOWHTML".
/// Через бит $title = JRequest::getVar('title', 'Значение по умолчанию', 'get', 'string', 5); /Через константы $title = JRequest::getVar('title', 'Значение по умолчанию', 'get', 'string', JREQUEST_NOTRIM + JREQUEST_ALLOWHTML);
- И наконец, пример работы с массивами.
Массив может быть отправлен следующим образом:
<form action="index.php?option=com_test" method="post"> <input type="checkbox" name="elements[]" /> <input type="checkbox" name="elements[]" /> <input type="checkbox" name="elements[]" /> </form>
А обработать его значения можно так:
1
2
3
4
5
6
7
8$elements = JRequest::getVar('elements', array(), 'post'); if(count($elements)) { foreach($elements as $key=>$val) { // Обработка } }
Если, например в новом компоненте, не подключен класс JRequest , то нужно воспользоваться функцией jimport();
Файл в котором описан статический класс JRequest находиться по адресу
/libraries/joomla/environment/request.php
jimport('joomla.environment.request'); |