Ejemplo de Helper en CodeIgniter

  • Por
  • PHP
Veamos el URL Helper de CodeIgniter, que nos vendrá bien como ejemplo de uso de un helper en este framework PHP.
El Helper de URL es una de las librerías de funciones más fundamentales de CodeIgniter, que quizás utilicen todas las aplicaciones web que puedas construir con el framework, por muy sencillas que sean.

El URL Helper contiene una serie de funciones que nos servirán a trabajar con URLs en las aplicaciones web, para realizar acciones tan básicas como generar URLs completas de páginas de la aplicación web a partir de una ruta sencilla, la obtención de la URL base se nuestra aplicación, la URL actual, etc.

Este artículo pretende servir de guía de uso de Helpers en general, aunque habría que comentar que, en el Manual de CodeIgniter, ya hemos publicado alguna información previa sobre los helpers, que deberías conocer.

Nota: Para que quede claro hasta que punto es básico este Helper de URL cabe decir que, hasta donde hemos explicado en este Manual de CodeIgniter, ya lo hemos utilizado en el primer ejemplo de aplicación sencilla. Ese ejemplo está dividido en tres artículos y en el segundo, titulado Creamos la base de datos y conectamos desde una página se puede encontrar el uso del helper URL.

Controlador para probar el helper

Vamos a crear en este artículo un controlador que hace uso del helper URL, con un par de usos del mismo para construir enlaces y ver la URL principal de la aplicación web. Haremos un controlador bastante simple, para centrarnos más bien en el uso del helper.

Como cualquier controlador, debe extender la clase Controller.

class Probando_helper_url extends Controller {
   //código del controlador
}

Cargar el helper desde el constructor del controlador

Como hemos dicho cuando se hablaba de los helpers en el artículo anterior, tenemos que cargar explícitamente el Helper de URL para poder utilizarlo. Esto lo podemos hacer desde el archivo de configuración autoload.php, con lo que tendremos el helper cargado en cualquier lugar de la aplicación, o bien desde el controlador donde lo necesitemos. En este caso vamos a ver un controlador que carga el helper.

En el caso de cargar el helper desde el controlador, lo podemos hacer desde el constructor, para que esté accesible desde cualquier función, o desde una de las funciones del controlador. Veremos cómo cargarlo desde el constructor.

function __construct(){
   parent::Controller();
   
   //cargo el helper de url
   $this->load->helper('url');
}

Nota: Como se puede ver, el método de realización del constructor es de PHP 5. Recordar que en PHP 4 el constructor es una función con el mismo nombre que la clase y en PHP 5 el constructor es una función con el nombre __construct().

Dentro de los constructores de controladores se debe llamar primeramente al constructor de la clase padre (de la que heredamos), con parent::Controller().

Luego hacemos la carga del helper URL con la llamada al método helper() de la clase load que forma parte del controlador, indicando entre paréntesis el helper que deseamos cargar: 'url'.

Uso el helper en las funciones de los controladores

Ahora que ya he cargado el helper en el constructor, en todo el código del controlador tendré disponibles, como globales, todas las funciones del helper URL. (También en las vistas que se carguen desde el controlador, aunque nosotros no vamos a hacer en este ejemplo ninguna vista)

Veamos entonces un ejemplo de función del controlador.

function index(){
   //escribo desde el controlador, aunque debería hacerlo desde la vista
   echo "<h1>Probando helper URL</h1>";
   
   //genero el enlace de este controlador, para la función creada muestra_base_url()
   $enlace = site_url("probando_helper_url/muestra_base_url");
   //escribo un enlace con esa función del controlador
   echo '<a href="' . $enlace . '">Muestra la URL base</a>';
}

Este es el método index() que es el que se invoca por defecto en el controlador si no se especifica ningún otro en la solicitud de URL. Podemos ver el uso de las funciones del helper de URL en la línea:

$enlace = site_url("probando_helper_url/muestra_base_url");

Con esta línea invocamos la función site_url() del helper URL, que sirve para obtener una URL del sitio a partir de una ruta parcial. Esta función es útil porque sirve para saber cómo es la URL completa con la que hay que enlazar distintas páginas del sitio, que podría variar dependiendo del lugar donde se haya instalado CodeIgniter, sólo a partir de un segmento que no puede cambiar. Dicho de otra manera, al enlazar con otras páginas del sitio conviene componer las URL siempre con la función site_url(), para que esos enlaces sigan funcionando aunque la aplicación la cambiemos a otro directorio, otro dominio, etc.

Nota: Un detalle que queremos señalar también sobre la función anterior, index(), es que hacemos uso de la sentencia echo de PHP para escribir cosas en la página directamente con el controlador. Esto no es recomendable, aunque se pueda hacer en CodeIgniter, pues la salida hacia la página desde nuestros scripts debería estar siempre en las vistas.

Ahora podemos ver un segundo método del controlador con otro uso de las funciones del helper URL.

function muestra_base_url(){
   //escribo desde el controlador, aunque debería hacerlo desde la vista
   echo base_url();
   
   //un enlace para volver
   echo '<p><a href="' . site_url('probando_helper_url') . '">Volver</a></p>';
}

Esa función escribe por pantalla lo que devuelve la función base_url(), que pertenece al helper de URL y sirve para informar de la ruta raíz de la aplicación CodeIgniter, que también dependerá del dominio donde estemos trabajando y el directorio donde se haya instalado el framework.

Luego también escribe un enlace para volver a la página anterior y para crear la ruta del enlace también utilizamos el helper de URL con la función site_url() relatada anteriormente, indicando en este caso tan solo el nombre del controlador al que queremos dirigir el enlace.

Código completo del controlador

Ahora veamos el código del controlador completo que hace uso del helper URL:

class Probando_helper_url extends Controller {
   
   ///////////////////////////////////////////////////////////////////////////
   //Constructor
   function __construct(){
      parent::Controller();
      
      //cargo el helper de url
      $this->load->helper('url');
   }

///////////////////////////////////////////////////////////////////////////
//método index, función por defecto del controlador
function index(){
   //escribo desde el controlador, aunque debería hacerlo desde la vista
   echo "<h1>Probando helper URL</h1>";
   
   //genero el enlace de este controlador, para la función creada muestra_base_url()
   $enlace = site_url("probando_helper_url/muestra_base_url");
   
   //escribo un enlace con esa función del controlador
   echo '<a href="' . $enlace . '">Muestra la URL base</a>';
}

   ///////////////////////////////////////////////////////////////////////////
   //funcion muestra_base_url, para mostrar la URL principal de esta aplicación web
   function muestra_base_url(){
      //escribo desde el controlador, aunque debería hacerlo desde la vista
      echo base_url();
      
      //un enlace para volver
      echo '<p><a href="' . site_url('probando_helper_url') . '">Volver</a></p>';
   }
   
   ///////////////////////////////////////////////////////////////////////////
   //funcion muestra_url_actual, para mostrar la URL actual de esta página
   function muestra_url_actual(){
      //escribo desde el controlador, aunque debería hacerlo desde la vista
      echo current_url();
      
      //un enlace para volver
      echo '<p><a href="' . site_url('probando_helper_url') . '">Volver</a></p>';
   }
}

En este código hemos agregado al controlador un método llamado muestra_url_actual(), para probar la función del helper URL current_url(), que sirve para obtener la URL actual de la página que se está ejecutando.

Recordar que todo lo visto en este artículo sirve para entender el uso de los helpers en CodeIgniter, aunque nos hayamos saltado algunas recomendaciones del trabajo con el framework, como escribir contenido en la página directamente con el controlador y sin utilizar las vistas. Así mismo, es importante señalar que el helper URL tiene otras funciones también bastante útiles que seguramente nos vendrá bien conocer y que podemos revisar en la documentación del framework.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Alejandro Martínez A.

17/5/2011
Sintaxis del constructor
En la guía de usuario de Codeigniter actual señalan que la línea de código del constructor debe ser

parent::__construct();

en vez de ...

parent::Controller();

Alejandro Martínez A.

17/5/2011
Siguiendo con lo anterior...
Aaah... ahora entiendo que la línea de código del constructor

parent::Controller();

seguramente es para PHP 4.

midesweb

17/5/2011
Efectivamente PHP4
La última versión de CodeIgniter es solo compatible con PHP5, por lo que esa llamada al constructor parent ha cambiado, como has podido deducir.
Gracias por el comentario.

Alvaro

28/10/2011
me sale "call to undefined function site_url()"
hola me sale el error "call to undefined function site_url()" en la linea $enlace = site_url("probando_helper_url/muestra_base_url"); por que???

locopump

20/2/2015
Y el helper?
pusiste todo menos el helper, creo que la ayuda esta incompleta, he visto a un usuario decir me sale un error de Call undefined.... eso es porque el usuario no ha creado el helper y esta llamando a un helper que no existe, para un usuario nuevo estaría rompiendose la cabeza pensando porque, pero bueno creo que deberías completar la ayuda para colaborar con la comunidad de programadores :) igual gracias por el apoyo a nombre de todos.

Andy

15/11/2016
Muy bueno
Muchas Gracias,
En general por el material. Entiendo que muchas cosas están desactualizadas y se tienen que complementar de otras paginas pero para los que ya tenemos cierta base en PHP nos sirve bastante.