Usando ‘Hooks’ en CodeIgniter
Muchas veces nos encontraremos, al programar nuestras aplicaciones, que necesitamos realizar una tarea en todas las paginas por igual, en un mismo momento. Hay una solución para eso, muy muy mala, que es hacer un copy&paste del código en todas las paginas (si.. si.. quien no ha hecho eso alguna vez...).
Por suerte CodeIgniter nos trae de la mano una buena herramienta llamada 'Hooks' o ganchos, que simplemente nos permite hacer eso, ejecutar determinadas funciones en un determinado momento.
El "determinado momento", básicamente puede ser:
- pre_system: al principio de la ejecución del sistema, sin haber cargado básicamente nada.
- pre_controller: ejecutar antes de cargar el controlador, una vez cargadas las librerías y todo el systema básico.
- post_controller_constructor: justo se ejecutar tras el constructor del controlador pero antes de cualquier función.
- post_controller: se ejecutará una vez lo haya hecho el controlador.
- display_override: esto es para sobrescribir la función que nos muestra la pagina finalizada en el navegador.
- cache_override: lo mismo pero para la función de cache, nos permite sobreescrivirla.
- scaffolding_override: para crear nuestro propio scaffolding.
- post_system: ejecutará el código al final de todos los procedimientos.
En la user_guide de Codeigniter podréis encontrar esta información más extendida.
Bien, para que quede más claro, vamos a ver un ejemplo. En este caso supondremos que estamos trabajando en una página web multilenguaje. Y queremos crear un 'hook' que nos lea una variable de sesión que contiene el idioma que hay seleccionada y con eso nos cargue el idioma especificado (para los que no sepáis como funciona la "language class", echarle un vistazo en la guía).
Gestor de noticias (Cuarta parte): Formularios y validación
El otro día, en la tercera parte de estos tutoriales os enseñé lo que era el scaffolding y como nos servía para testear rápidamente nuestra aplicaciones, pero realmente no sirve como una herramienta de administración, así que para ello deberemos crear un formulario que nos permita añadir nuevas noticias a la web.
Para ello necesitaremos:
- Formulario para añadir los datos
- Código que nos valide que los datos del formulario son correctos
- Código que nos añada lo que recogemos del "1" a la base de datos.
Gestor de noticias (Tercera parte): Vistas y bases de datos
Bueno seguiremos un poco más con nuestro taller del "Gestor de Noticias" en CodeIgniter.
Retomando el código del taller anterior, donde hicimos nuestro primer "Hola Mundo", haremos que se cargue ese controlador juntamente con las vistas que generamos en el primer taller (en el que partimos nuestro diseño en una cabecera y un pie de página). Ya de paso crearemos un archivo en la carpeta views/ que será nuestra vista para la función "leer" de nuestro controlador "noticias", y ahí pondremos nuestro "Hola mundo", ya que la gracia de todo esto es dividir nuestra aplicación en modelos, vistas y controladores, por lo que cualquier salida de texto por pantalla debería estar en una vista y no en un controlador. La cosa quedaría así: