Как передать данные из контроллера в модель

  • 03.07.2014

Часто на форуме у разработчиков компонентов возникает вопрос о взаимодействии контроллера и модели. Они не знают как правильно передать данные из контроллера в модель. Нет ничего проще - используйте состояние модели.

Предположим, что мы хотим получить какие-то данные из запроса и использовать их в модели. Можно получить эти данные напрямую из модели, но в парадигме 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');

Удачной разработки!

Это интересно:

Добавить комментарий

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Скачать Joomla! 3 Документация Joomla! CMS Свернуть

Расширения Joomla

Новости портала

Новое в блогах

Видео