lunes, 30 de junio de 2008

Controladores y vistas

Nuestros modulos estan dentro de la carpeta application.

Los modulos en un sistema que trabaja con MVC estan compuesto de 3 partes.

Modelo
Vista
Controlador.

El modelo ya aclaramos en otra seccion como crearlo.

Lo que necesitamos ver ahora son los controladores, y las vistas.

* Controllers
Dentro de la carpeta application tenemos por ejemplo el modulo usuarios, este tiene una carpeta con el mismo nombre. Dentro de esa carpeta podemos ver 2 carpetas mas, controllers, y views. Una particularidad es que un modulo no necesariamente tiene que tener un solo controller puede tener mas de uno, en nuestro caso vamos a tener dos. Un indexController.php y un adminController.php, el primero se va a encargar de procesar todas las acciones dentro del frontend, y el otro, todo lo referente al backend. Pero podemos hacerlo en mas controller, o en uno solo, esto es particular de cada uno.

Nuestros controllers tienen que heredar Zend_Controller_Action, pero como hicimos con los modelos podemos heredar una clase intermedia, eso depende de cada uno.

Cada metodo publico (deberian ser los unicos), tiene el posfijo Action, el cual representa que eso es una accion. Un ejemplo de un controller seria el siguiente.


class Usuarios extends Zend_Db_Table
{
public static function getUsuarios()
{
$view->usuarios = Usuarios::getUsuarios();
$this->render();
}
public function addAction()
{
$this->render();
}
}
?>


Si en la url no especificamos un action, el metodo por default es index. En nuestro ejemplo va a buscar al modelo de usuarios, todos los registros y los va a enviar a la vista a traves de $this->view, esto va a crear una variable $this->usuarios en nuestra vista.


* Vistas.
La carpeta de vistas esta dividida inicialmente en tres partes, filters, helpers, y scripts, en filters, vamos a guardar los filters (cuak), si queremos saber mas sobre esto podemos ir a esta url. http://framework.zend.com/manual/en/zend.filter.html#zend.filter.introduction.definition
En helpers van todos nuestros helpers para ese modulo especifico, si es un helper generico podemos ubicarlo dentro de nuestras librerias.
La carpeta scripts, contiene en nuestro caso tres carpetas admin, index y error. Esto se debe a que usamos dos controllers, si tuvieramos uno solo tendriamos index y error solamente.

Dentro de index para seguir con nuestro ejemplo tenemos varios archivos .phtml, esta extension determina que es una vista. Si nosotros tenemos el metodo index en nuestro controller, debemos tener una vista index.phtml, lo mismo para add, add.phtml. Esto ZF lo interpreta automaticamente, pero tambien podemos decirle que ejecute una vista en particular, o que no ejecute ninguna.

un ejemplo de index.phtml seria.














Esto nos va a mostrar todos los registros devueltos por el modelo.

No hay comentarios: