2012-03-05 21 views
15

Patrzę na linię 34 /administrator/components/com_contact/views/contacts/view.html.php gdzie jest napisane $this->items = $this->get('Items'); To, czego nie rozumiem, to jak to faktycznie wywołanie protected function getListQuery() on line 123 /administrator/components/com_contact/models/contacts.phpJoomla get ("Items") i jak to działa

Istnieje również kilka innych rzeczy, których nie rozumiem, jak działają ... jak

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

Jakie są te powołania? Spojrzałem na dokumentację dla "get()", ale nie mówi to, co faktycznie wywołują, ponieważ nie widzę żadnych metod o nazwie getPagination, getState lub getItems ... Wygląda na to, że get ("Items") jest jakoś magiczne wywoływanie getListQuery().

Odpowiedz

31

Ja zakładając 1,7/2,5 + tutaj ...

W MVC Joomla! Pogląd contacts (ContactViewContacts który extends JView) automatycznie ładuje modelu contacts (lub w J! Terminologii ContactModelContacts), który jako klasa extends JModelList.

Model get() szuka widoku w celu uzyskania danych z zarejestrowanego modelu lub właściwości widoku.

Tak;

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

jest rzeczywiście wezwanie do modelu ContactModelContacts który ma dopasowanie getItems() w to parent.

Plik modelu com_contact/models/contacts.php nie realizuje swój własny getItems(), więc getItems() z klasy JModelList służy (znaleziono w /libraries/joomla/application/component/modellist.php).

To z kolei wywołuje getListQuery() - nie ma magii tylko dziedziczenia.

The $this->get('Pagination') robi to samo, czyli. dostęp do implementacji w modelach rodzic.

Najprawdopodobniej $this->get('State') powróci do implementacji JModel.

+1

Mężczyzna, czy czuję się jak kretyn ... To ma zbyt wiele sensu. Chyba nigdy nie widziałem metody Inherited, a następnie wywołaj metodę klasy podklasy. Myślę, że wpisałem to poprawnie. Tak czy inaczej - DZIĘKUJĘ! – dingerkingh

+8

Poradnik dla programistów komponentów Joomla jest odpowiedzialny za ten bałagan. Marnuję wielki czas błądząc po tym bałaganie (wyobrażałem sobie, że tak będzie, ale w tutorialu nie było go w 1.5 ani 2.5). Dziękuję bardzo za odpowiedź. – Ruwantha

+4

Chciałbym dodać, że jeśli ktokolwiek, w tym Ruwantha, jest niezadowolony z którejkolwiek z dokumentacji Joomla, możesz przyczynić się do jego ulepszenia. Joomla to projekt wolontariacki, który pomaga każdemu, aby był lepszy. – betweenbrain