Inicio > CodeIgniter, Programación web > Extender Helpers en CodeIgniter

Extender Helpers en CodeIgniter

Lunes, 16 de Marzo de 2009

Los ‘Helpers‘ de CodeIgniter son básicamente pequeñas librerías con 4 o 5 funciones que nos dan funcionalidades que nos ayudan con los problemas típicos al crear webs. A medida que vayamos experimentando y avanzando con la programación de una web nos encontraremos con que necesitamos añadir nuevas funcionalidades a los helpers existentes o a veces modificar las que ya están hechas.

Podemos pensar en ir a la carpeta “system” ahí buscar el helper y modificarlo. Si, se puede hacer pero es una manera muy “guarra” de proceder, básicamente por dos razones:

  • Nos actualizan el CodeIgniter y coincide que modifican ese helper, vamos a tener un problema.
  • Queremos reutilizar código, es muy engorroso ir haciendo copy&paste de funciones de algunos helpers.

Por ello, CodeIgniter nos da una herramienta para poder hacerlo y a la vez evitar estos problemas. Es tan fácil como añadir un fichero en la carpeta “application/helpers” que se llame “MY_<nombre_del_helper_a_extender>.php”.

Nota: el prefijo MY_ se puede cambiar por otro que queramos (que no sea CI, ya que es el que usa el sistema) en el config.php.

Veamos un ejemplo, queremos  añadir una nueva función al array helper que nos servira para codificar en utf8 (muy util, por cierto para los tipicos $_POST). Vamos a proceder en crear un archivo que se llame “MY_array_helper.php” en la carpeta “application/helpers” tal y como hemos comentado.

Añadiremos este codigo:

< ?php
	if(!defined('BASEPATH'))
		exit('No direct script access allowed');

	function to_utf8($in)
	{
		if(is_array($in))
		{
			foreach ($in as $key => $value)
			{
				$out[to_utf8($key)] = to_utf8($value);
			}
		}
		elseif(is_string($in))
		{
			return utf8_encode($in);
		}
		else
		{
			return $in;
		}

		return $out;
	}
?>

Y ya esta, muy simple. Ahora simplemente habria que cargar el helper con el “config/autoload.php” o simplemente asi:

$this->load->helper(”array”);

En caso de que queráis modificar o sobrescribir una función de algún helper, es hacer exactamente lo mismo pero poniéndole el mismo nombre.

Lagarto CodeIgniter, Programación web , , , , ,

  1. Martes, 17 de Marzo de 2009 a las 00:31 | #1

    UN problema que me encontré con este famoso “MY_” es que al subir la web al servidor Linux me decía que no encontraba el helper, y eso por poner luego el archivo en minusculas (my_helper) y no MAY_min (MY_helper)…

    Al final decidí usar siempre minusculas y modificar el config.

  2. djdiez
    Miércoles, 29 de Abril de 2009 a las 12:31 | #2

    La carga del helper la tendrías que hacer con load->helper no load->model.
    $this->load->helper(“array”);
    Un saludo

  3. Miércoles, 29 de Abril de 2009 a las 12:34 | #3

    Cierto, fue un descuido por mi parte, ya lo actualicé. Gracias ;)

  1. Sin trackbacks aún.