Extendiendo helpers en CodeIgniter
Añadir nuevas funciones a los helpers que vienen en CodeIgniter es realmente sencillo. Lo primero que tenemos que hacer es crearnos un archivo con el siguiente formato de nombre “prefijo_nombre_helper.php” en el directorio helpers de nuestra aplicación. El prefijo será usualmente MY, aunque esto es configurable. Vamos a ver un ejemplo y vamos a extender el helper html. Para ello creamos un archivo llamado MY_html_helper.php cuyo código es el siguiente:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if( ! function_exists('link_tag_multiple'))
{
function link_tag_multiple($links)
{
$link_result = array();
if(is_array($links))
{
if(count($links) > 0)
{
foreach($links as $link)
{
$link_result[] = link_tag($link);
}
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
return $link_result;
}
}
if( ! function_exists('script'))
{
function script($src = '', $language = "JavaScript")
{
$CI = & get_instance();
$script = '<script ';
if(is_array($src))
{
$script .= 'language="'.$src['language'].'" src="';
if(strpos($src['src'],"://") == FALSE)
{
$script .= $CI->config->slash_item('base_url').$src['src'];
}
else
{
$script .= $src['src'];
}
}
else
{
$script .= 'language="'.$language.'" src="';
if(strpos($src,"://") == FALSE)
{
$script .= $CI->config->slash_item('base_url').$src;
}
else
{
$script .= $src;
}
}
$script .= '"></script>';
return $script;
}
}
if( ! function_exists('script_multiple'))
{
function script_multiple($scripts)
{
$scripts_result = array();
if(is_array($scripts))
{
if(count($scripts) > 0)
{
foreach($scripts as $script)
{
$scripts_result[] = script($script['src'], $script['language']);
}
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
return $scripts_result;
}
}
Bien como se puede ver con la primera linea evitamos el acceso directo a este archivo. Despues definimos tres nuevas funciones, siempre que no existieran antes. Acabamos de extender nuestro helper. Ahora al cargarlo disponemos de estas tres nuevas funciones.
Si a alguien le intereas esas tres funciones las uso para añadir multiples CSS en una vista y para añadir scripts de JavaScript.
Fe de erratas:
En el código original la función script_multiple hace una llamada a la función script y los parámetros estaban intercambiados. Es decir, antes de la corrección se pasaba $script['language'] y $script['src'] cuando debería ser $script['src'] y $script['language']. Esto ya está corregido en esta edición.
