Trabajando en proyectos cada vez más grandes, como programadores nos vemos obligados a aprender nuevas técnicas para acelerar el proceso de producción de código. Cuando repetimos fragmentos de nuestra aplicación en distintos archivos estamos ampliando las probabilidades de error, a parte de que tendremos que reparar el error en cada uno de los archivos.

Anteriormente hablaba de como usar helpers para no repetir código un mismo fragmento de código una y otra vez.

El tema le toca ahora a los views, que por costumbre acumulan una gran cantidad de código repetido.

Usualmente si tenemos una lista de casas, haríamos algo como:

Esta manera de mostrar las casas no muestra ningún problema hasta que tengamos que mostrar la lista de casas en otro sitio, entonces comenzaremos a repetirnos. Esto se puede evitar teniendo una plantilla que muestre una casa de manera individual

y la plantilla house.php:

Llevando toda la lógica a los controllers

El método load->view() acepta 3 parametros:

  1. El nombre del archivo del template
  2. Datos que le queramos pasar a la plantilla
  3. El tercer parametro permite cambiar el funcionamiento de la funcion para que retorne la data como una cadena de texto en vez de enviarla al browser.

Más información sobre la clase Loader en la guía de usuario de CodeIgniter

Sabiendo esto, podemos almacenar todo el output del loop en un string desde el controller y luego hacer solo algo como echo $houses; en el template.

Así se pueden limpiar un poco los views y evitar la repetición de código hasta cierto punto.

Entradas Relacionadas:

  1. CodeIgniter, Google Analytics y código reusable
  2. Sirviendo los archivos estáticos del admin de Django en Webfaction