Modelos y vistas en componente Joomla 2.5

Uno de los problemas que nos encontramos cuando nos iniciamos en Joomla 2.5, es entender como acceder a los modelos desde las vistas.

Las vistas tienen un modelo que es el considerado por defecto. Digamos que es el modelo principal. Pero ¿cómo sabe una vista cual es su modelo principal?

Para ello Joomla 2.5 utiliza su sistema de nomenclatura. Para explicarlo, voy a utilizar un ejemplo:

Supongamos que tenemos un controlador llamado “PersonasController”. Y tenemos un modelo denominado “PersonasModelPersonas”. Para que Joomla asigne el modelo “Personas” a nuestra vista, ésta debe llamarse “PersonasViewPersonas”.

Es decir si nuestra vista se llama igual que nuestro modelo, Joomla 2.5 le asignará el modelo de manera automática. Así desde nuestra vista, podremos acceder a su modelo.

¿Debemos tener un modelo para cada vista?

No me parece descabellado tener un modelo para cada vista. Todo depende de la organización del componente. Pero no estamos obligados a ello. Si nosotros queremos asignar un modelo por defecto a nuestra vista, desde el controlador, sin pasar por ninguna acción, podemos añadir este código a nuestro controlador:

function display($cachable = false, $urlparams = false){
   $this->SetModels();
   parent::display();
}
private function SetModels(){
  if(JRequest::getVar("view") == "verpersona"){
    $view = $this->getView( 'verpersona', 'html' );
    $view->setModel($this->getModel('personas'),true);   
  }
}

Como podemos ver, estamos asignando el modelo “personas” a nuestra vista “verpersona”. Además le estamos diciendo que ese es el modelo “principal” de nuestra vista.

¿Sólo podemos tener un modelo por vista?

No. Podemos tener tantos modelos como queramos, pero sólo uno puede ser el principal. A veces es necesario tener en nuestra vista datos que no tienen relación directa con el modelo que estamos tratando, Por ejemplo, igual necesitamos coger, países, ciudades, etc, de otros modelos. Para poder utilizar estos modelos en nuestras vistas, siempre deberán ser pasados desde el controllador que invoca a esta vista.

Espero haber sido capaz de poder explicar como asigna Joomla 2.5 los modelos a las vistas. La verdad es un método un tanto extraño ;)

Esta entrada fue publicada en Componentes. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s