Работа с входными данными в Джумла 1.5

25.08.2012
В частности работа с переданными массивами.

Для работы с переданными данными (фильтрации данных $_GET и $_POST) в Joomla 1.5 существует класс JRequest.
Пара примеров его использования:

  1. Получаем значение переданного параметра $title и сохраняем его в переменную:
    $title = JRequest::getVar('title');

    При этом, если не установлены другие параметры, то с начала и конца строки удаляться пробелы, и текст будет очищен от HTML-форматирования.

  2. Если нам нужно еще и задать значение по умолчанию, то модернизируем код:

    $title = JRequest::getVar('title', 'Значение по умолчанию');

  3. Если нужно явно указать, откуда брать данные (По умолчанию данные получаются из массива $_REQUEST):
    $title = JRequest::getVar('title', 'Значение по умолчанию', 'get');

    Возможные варианты:

    • GET
    • POST
    • FILES
    • COOKIE
    • ENV
    • SERVER
    • REQUEST
    • Иногда нужно явно указать тип переменной:

  4. Иногда нужно явно указать тип переменной:
    $title = JRequest::getVar('title', 'Значение по умолчанию', 'get', 'string');

    Так же поддерживаются следующие типы:

    • int - Целочисленые значения
    • float - Число с плавающей точкой
    • bool - Булево значение
    • word - слово
    • cmd - команда
    • string - строка

    Для удобства вы можете использовать методы класса "JRequest" следующего типа:

    • getInt
    • getFloat
    • getBool
    • getWord
    • getCmd
    • getString
    • get

    Методы выполняют ту же самую роль что и "getVar", аргументы те же, за исключением того что нет маски и типа переменной. Метод "get" использует два параметра - название переменной и маска.

  5. Данный пример показывает как использовать маски фильтрации:

    КОД

    • 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);
    /

  6. И наконец, пример работы с массивами.

    Массив может быть отправлен следующим образом:

    <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');


Категории: CMS Joomla 1.5.X, Joomla
Яндекс.Метрика