Veamos el URL Helper de CodeIgniter, que nos vendrá bien como ejemplo de uso de un helper en este framework PHP.
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.
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');
}
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.
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.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...