Joomla get ('Items') и как это работает

Я просматриваю строку 34/administrator/components/com_contact/views/contacts/view.html.php, где говорится $this->items = $this->get('Items'); То, что я не понимаю, это то, как это на самом деле вызывает protected function getListQuery() on line 123 of/administrator/components/com_contact/models/contacts.php

Есть и другие вещи, которые я не понимаю, как работают... например

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

Каковы эти призывы? Я посмотрел документацию на "get()", но он не говорит, что это на самом деле вызывает, потому что я не вижу никаких методов, называемых getPagination, getState или getItems... Кажется, get ( "Items" ) каким-то образом магически вызывающий getListQuery().

Ответы

Ответ 1

Я предполагаю 1.7/2.5 + здесь...

В Joomla! MVC - представление contacts (ContactViewContacts, которое extends JView) автоматически загружает модель contacts (или в терминологию J! ContactModelContacts), которая как класс extends JModelList.

get() смотрит в представление, чтобы получить данные из зарегистрированной модели или свойства представления.

Итак,

$this->items = $this->get('Items');

на самом деле является вызовом модели ContactModelContacts, которая имеет в ней getItems() .

Файл модели com_contact/models/contacts.php не реализует его собственный getItems(), поэтому используется getItems() из класса JModelList (находится в /libraries/joomla/application/component/modellist.php).

Это, в свою очередь, вызывает getListQuery() - нет магии только наследования.

$this->get('Pagination') делает то же самое, т.е. доступ к реализации в родительских моделях.

$this->get('State'), вероятно, полностью вернется к реализации JModel.