2012-03-05 4 views
15

Estoy viendo la línea 34 de /administrator/components/com_contact/views/contacts/view.html.php donde dice $this->items = $this->get('Items'); Lo que no entiendo es cómo en realidad está llamando a la protected function getListQuery() en la línea 123 de /administrator/components/com_contact/models/contacts.phpJoomla get ('Items') y cómo funciona

también hay algunas otras cosas que no entiendo cómo están trabajando ... como

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

¿Qué son estas llamadas? Miré la documentación de "get()" pero no dice qué es lo que realmente están llamando porque no veo ningún método llamado getPagination, getState o getItems ... Parece que el get ('Items') es de alguna manera mágicamente llamando a getListQuery().

Respuesta

31

estoy presumiendo 1.7/2.5 + aquí ...

En MVC Joomla! 'S la vista contacts (ContactViewContacts cuales extends JView) carga automáticamente el modelo contacts (o en J! Terminología ContactModelContacts), que como una clase extends JModelList.

El get() se ve en la vista para obtener datos de un modelo registrado o una propiedad de la vista.

So;

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

es en realidad una llamada al modelo ContactModelContacts que tiene un juego en getItems() es parent.

El archivo de modelo com_contact/models/contacts.php no implementa su propio getItems(), por lo que el getItems() de la clase JModelList se utiliza (se encuentra en /libraries/joomla/application/component/modellist.php).

Esto a su vez llama a getListQuery() - no es solo herencia mágica.

El $this->get('Pagination') está haciendo lo mismo, es decir. accediendo a la implementación en los modelos padre.

El $this->get('State') probablemente se remonta a la implementación JModel.

+1

El hombre me siento como un idiota ... Eso tiene demasiado sentido. Supongo que nunca antes había visto llamar a un método heredado y luego llamar a un método de subclase. Creo que escribí eso correctamente De cualquier manera, ¡GRACIAS! – dingerkingh

+8

El tutorial del desarrollador de componentes Joomla es responsable de este desastre. Pierdo mucho tiempo vagando por este lío (imaginaba que este sería el camino, pero en el tutorial no estaba allí en 1.5 o 2.5). Muchas gracias por la respuesta. – Ruwantha

+4

Me gustaría agregar que si alguien, incluido Ruwantha, no está satisfecho con la documentación de Joomla, puede contribuir a mejorarla. Joomla es un proyecto de voluntarios y requiere la ayuda de todos para mejorarlo. – betweenbrain