dominios y alojamiento web en hostalia

Vistas en CodeIgniter

10 de febrero de 2010
Valoración del artículo:
Qué son las vistas y como debemos utilizarlas en CodeIgniter para maximizar las ventajas del modelo - vista - controlador.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
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.

Compartir en redes sociales

Comentarios
Fueron enviados 9 comentarios al artículo
1 comentario no revisado
8 comentarios revisados:
Sobre el trabajo con las vistas
Por: Fidel Hernández
02/3/2010
Hola amigos. Soy programador de PHP pero ahora estoy trabajando tambien como diseñador de las Webs que hago. Lo que necesito es lo siguiente.

Cuando diseño una Web con Code Igniter y tengo que hacerle las vistas. Primero se programa todo y despues de hace lo que el el diseño con los CSS y todo eso para las vistas o esto tiene otra forma de hacerse?

Por que yo estoy usando algunas plantillas para hacer estas cosas, pero me es engorroso el trabajo con los CSS por que cuando estoy diseñando el sitio no puedo ver bien lo que voy haciendo en la vista por que el CSS se lo agreguo dinamicamente.

Alguien tiene una sugerencia ?
Avanzando facilmente
19/3/2010
Otro muy buen artículo, ahora voy entendiendo las estructuras de algunos programas que no entendía.

Saludos
excelente
Por: Ivan
30/11/2010
wow que gran manual, muchas gracias

basic82
Error en $this->load->view
01/4/2011
Voy leyendo y probando, y me di cuenta que al $this->load->view("nombre") debí agregarle la extensión html, por lo que mi código quedó:

$this->load->view("nombre.html");

De otra forma daba error.

basic82
$this->load->view en CodeIgniter 2.0.1
01/4/2011
Para el CI 2.0.1 se tratan las vistas como archivos php. Entonces, el $this->load->view("mivista") Funciona si el archivo mivista es de extensión php.

cazapla...
un extraño caracter al inicio de las vistas
30/10/2011
Me pasa algo muy raro. Las vistas de codeigniter se generan con una tabulacion en la primera linea, que al guardar la pagina, y editarla con notepad++ me aparece como una especie de acento, pero no se que carácter es.

El caso es que este acento hace que IE9 no interprete bien la pagina y por ejemplo, no me centre los <div>.

Alguien puede ayudarme please??

cazapla...
vistas en UTF-8
31/10/2011
Bueno, he descubierto que si guardo la vista con formato ANSI, esto se corrige. Antes las estaba guardando en UTF-8.

Sigo sin entender porque esto es un problema para codeigniter.

Alguien sabe porque??

cazapla...
problemas con utf-8
31/10/2011
Vale, ya he solucionado mi problema.

Resulta que cualquier archivo que usara en la aplicacion, ya fuera controlador, modelo o vista, codificado en Notepad++ como UTF-8, daba un fallo final en la vista.

Lo he arreglado cambiando todos los archivos de mi aplicación a UTF-8 sin BOM.

Espero que esta información le valga a alguien, porque a mi me a tenido loco unos días.

Manuales relacionados
Categorias relacionadas
El autor
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...