> Manuales > Manual de CodeIgniter

Qué son las vistas y como debemos utilizarlas en CodeIgniter para maximizar las ventajas del modelo - vista - controlador.

Vamos a pasar a un nuevo tema en el Manual de CodeIgniter en el que comenzaremos las explicaciones de las vistas, parte fundamental en este framework PHP y en el patrón de desarrollo de aplicaciones que utiliza, llamado modelo - vista - controlador.

En artículos anteriores de DesarrolloWeb.com ofrecimos una buena introducción a los controladores, y aunque realmente no hemos visto todo lo que los controladores nos ofrecen, estamos en condiciones de aprender otras cosas jugosas en CodeIgniter, que seguro nos motivarán durante nuestro aprendizaje, al ver que todo es bastante sencillo de asimilar.

Qué son las vistas

Una vista es una página web o un fragmento que se guarda en un archivo aparte. En una vista podríamos guardar, por tanto, toda la estructura de una página, o si preferimos una organización más minuciosa y por módulos, podremos guardar simplemente una sección, como puede ser la cabecera, pie, barra de navegación, etc. El grado de complejidad en el trabajo con vistas podremos marcarlo nosotros, según nuestras preferencias, costumbres de desarrollo o necesidades específicas, dado que podremos anidar unas vistas dentro de otras en cualquier nivel de jerarquía.

Las vistas no se acceden ni se invocan directamente con la solicitud de una URL en nuestra aplicación web, como ya podremos suponer. En realidad son módulos que se invocan desde los controladores, ya que en el modelo - vista - controlador que implementa CodeIgniter, la lógica de nuestra aplicación se almacena en el controlador y es éste el que debe llamar a las vistas que necesite para mostrar los resultados al visitante.

Así pues, los controladores decidirán qué hacer cuando se reciba una solicitud y las vistas decidirán cómo mostrar los resultados. Por decirlo de otra forma, la lógica de nuestra aplicación residirá en el controlador y la vista mantendrá el aspecto de nuestra página, el diseño de la página que se mostrará al usuario.

Crear una vista

Crear una primera vista en nuestra aplicación web es muy sencillo. Simplemente creemos un archivo con un poco de código HTML.

<html lang="es">
<head>
<title>Mi página web</title>
</head>
<body>
<h1>Bienvenido a mi web</h1>
</body>
</html>

Ahora podemos guardar esa vista con el nombre que deseemos y extensión ,php, por ejemplo mivista.php, en el directorio de las vistas que es "system/application/views".

Cargar una vista

Como decíamos, podemos invocar una vista desde un controlador. De hecho, cada vez que deseemos mostrar en la página cualquier texto, debemos invocar a la vista que necesitemos, o al menos sería la manera de proceder, en vez de hacer sentencias "echo" o similares directamente en el controlador.

Para cargar una vista hacemos lo siguiente:

$this->load->view('nombreDeLaVista');

En 'nombreDeLaVista' tendremos que indicar el nombre del archivo donde hemos guardado la vista, pero sin el ".php".

Veamos entonces cómo quedaría un controlador que llama a la vista que hemos hecho antes en este artículo.

<?php
class MiControlador extends Controller {

   function index(){
      $this->load->view('mivista');
   }
   
}
?>

Este controlador lo guardamos en la carpeta de controllers con el nombre "micontrolador.php". Y ahora podremos acceder a él por medio de una URL como esta:

http://localhost/index.php/micontrolador

O si tenemos CodeIgniter instalado en nuestro dominio, con una URL como esta otra:

http://www.midominio.com/index.php/micontrolador

Deberíamos ver simplemente el contenido de esa vista creada anteriormente. Es así de simple.

Almacenar vistas en subdirectorios

Debemos colocar todas las vistas en el directorio "views" (system/application/views), pero si lo deseamos podemos organizarlas por subdirectorios, lo que puede servir de utilidad si vamos a manejar gran número de vistas distintas, que dependen de secciones variadas de la página.

Para ello simplemente creamos un subdirectorio con el nombre que queramos, dentro de "views" y guardamos allí las vistas. Por ejemplo pensemos que tenemos varias vistas que pertenecen todas a la zona de registro de usuarios y queremos organizarlas en la carpeta "registro" (ruta completa "system/application/views/registro"). Entonces, las vistas colocadas allí se invocarían indicando el subdirectorio donde se encuentran, de la siguiente manera:

$this->load->view('registro/formulario_registro');

Llamar a varias vistas desde un controlador

Nada impide que organicemos nuestro contenido por partes, en vistas distintas, de hecho es una buena práctica que nos ayudará a mantener nuestro código de una manera más sencilla. Llamar a las distintas vistas irá concatenando todo el código HTML creado por cada vista y luego se enviarán al navegador todas juntas como el resultado de procesar una página.

Podremos invocar varias vistas en una función de un controlador, de una manera similar a esta:

function cargarVistas(){
   //cargo una vista cabecera.php que está en el directorio plantillas
   $this->load->view('plantillas/cabecera');
   
   //cargo una vista llamada formulario_busqueda.php
   $this->load->view('formulario_busqueda');
   
   //creo un array de datos para enviarlo a una vista
   $datos['page_title'] = 'Mi Título';
   //cargo una vista llamada cuerpo.php a la que le mando un array de datos para configurarla
   $this->load->view('cuerpo', $datos);
   
   //cargo una vista que está en el directorio plantillas
   $this->load->view('plantillas/pie');
}

En este ejemplo hemos cargado varias vistas y en una de ellas le hemos enviado datos para configurar cómo se mostrará al visitante, en concreto la vista cuerpo.php. Esta utilidad es fundamental para que las vistas muestren cualquier información que se envíe desde los controladores y no solamente un texto siempre igual. En el próximo artículo sobre vistas aprenderemos a realizar esta acción.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual