Доброго времени суток. Пытаюсь понять как работают методы getState и setState у JmodelLegacy. Я пока начинаю только изучать Joomla, поэтому не судите строго. Я хочу сделать свой собственный модуль для отображения последних новостей. Я захотел посмотреть как работает модуль mod_articles_news И там я наткнулся на такой код: Код (CODE): // Get an instance of the generic articles model $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); // Set application parameters in model $appParams = JFactory::getApplication()->getParams(); $model->setState('params', $appParams); // Set the filters based on the module params $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); $model->setState('list.select', 'a.fulltext, a.id, a.title, a.alias, a.title_alias, a.introtext, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' . ' a.modified, a.modified_by, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' . ' a.hits, a.featured, a.language' ); // Access filter $access = !JComponentHelper::getParams('com_content')->get('show_noauth'); $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id')); $model->setState('filter.access', $access); // Category filter $model->setState('filter.category_id', $params->get('catid', array())); // Filter by language $model->setState('filter.language', $app->getLanguageFilter()); // Set ordering $ordering = $params->get('ordering', 'a.publish_up'); $model->setState('list.ordering', $ordering); if (trim($ordering) == 'rand()') { $model->setState('list.direction', ''); } else { $model->setState('list.direction', 'DESC'); } // Retrieve Content $items = $model->getItems(); Я прочитал конечно что компоненты Joomla разработаны с учетом MVC. В строчке Код (CODE): $model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true)); Мы получаем модель компонента com_content. Потом идут строки кода: Код (CODE): $model->setState('list.start', 0); $model->setState('list.limit', (int) $params->get('count', 5)); $model->setState('filter.published', 1); $model->setState('list.select', 'a.fulltext, a.id, a.title, a.alias, a.title_alias, a.introtext, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' . ' a.modified, a.modified_by, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' . ' a.hits, a.featured, a.language' ); А потом бац и строчка: Код (CODE): // Retrieve Content $items = $model->getItems(); Я догадываюсь что в этой строчке срабатывает выборка из бд по указанному выше запросу. Подскажите где почитать про list и filter и как они работают. Спасибо.
Такие ответы н***р никому не нужны на форуме русскоязычной CMS. Вопрос напрямую связан с профилем раздела. По теме есть что сказать? Код (PHP): /** * Method to get model state variables * * @param string $property Optional parameter name * @param mixed $default Optional default value * * @return object The property where specified, the state object where omitted * * @since 12.2 */ public function getState($property = null, $default = null) { if (!$this->__state_set) { // Protected method to auto-populate the model state. $this->populateState(); // Set the model state set flag to true. $this->__state_set = true; } return $property === null ? $this->state : $this->state->get($property, $default); } /** * Method to set model state variables * * @param string $property The name of the property. * @param mixed $value The value of the property to set or null. * * @return mixed The previous value of the property or null if not set. * * @since 12.2 */ public function setState($property, $value = null) { return $this->state->set($property, $value); } Я в такие дебри не лазал, но, на сколько я понимаю - setState устанавливает параметры для работы модели (переменные из контроллера), а getState их получает для возможности просмотра текущего статуса.
Ну тогда может лучше хотя бы так: Общая документация для разработчиков Документация по разработке модулей (ещё ближе к теме...) А то всё равно, что сказать "поищи в интернете".