Предположим, что мы хотим получить какие-то данные из запроса и использовать их в модели. Можно получить эти данные напрямую из модели, но в парадигме MVC модель должна быть изолирована от внешнего окружения, поэтому такой способ не очень хорош.

В Joomla для этого есть более подходяший способ - состояние модели. По сути, состояние модели - это своеобразное хранилище временных данных, которые не относятся непосредственно к классу модели, но нужны ей для совершения определенных операций в определенный момент времени. Состояние модели в Joomla представляет собой объект, работа с которым осуществляется с помощью двух методов класса JModelLegacy:

  • getState($property = null, $default = null) - получение значения свойства из состояния, а если свойство не найдено, вторым параметром можно передать его значение по умолчанию. Если вызвать метод без параметров, то будет возвращен объект состояния.
  • setState($property, $value = null) - установка значения свойства в состояние

Применительно к контроллеру это выглядит следующим образом:

 

// Получаем данные из запроса
$var = $this->input->get('data');

// Передаем данные в модель
$model = $this->getModel();
$model->setState('data', $var);

Далее в модели получаем эти данные:

 

$var = $this->getState('data', 'state test');

Кстати, состояние модели можно легко получить в представлении. Думаю, что вам знакома эта строка:

 

$state = $this->get('State');