2012-03-05 2 views
15

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

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

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

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

ответ

31

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

В MVC Joomla! 'S мнение contacts (ContactViewContacts который extends JView) автоматически загружает модель contacts (или в J! Терминологии ContactModelContacts), который как класс extends JModelList.

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

So;

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

на самом деле вызов модели ContactModelContacts, который имеет соответствующий getItems() в это parent.

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

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

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

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

+1

Человек, я чувствую себя придурком ... Это имеет слишком большой смысл. Наверное, я никогда не видел, чтобы метод Inherited вызывался, а затем вызывал метод подкласса. Кажется, я набрал это правильно. В любом случае - СПАСИБО! – dingerkingh

+8

Учебник по разработке компонентов Joomla несет ответственность за этот беспорядок. Я трачу много времени на блуждание об этом беспорядке (я думал, что это будет так, но в учебнике его не было в 1.5 или 2.5). Большое спасибо за ответ. – Ruwantha

+4

Я хотел бы добавить, что если кто-то, включая Ruwantha, недоволен какой-либо документацией Joomla, вы можете внести свой вклад в его улучшение. Joomla - это проект волонтеров, и всем нужна помощь, чтобы сделать его лучше. – betweenbrain

Смежные вопросы