ortizvivas.com

Blog sobre emprendimiento y programación

  • Acerca de Mí
  • Proyecto Kentana
  • Core
  • Contacto
Usted está aquí: Inicio / Post / Enrutamiento en CodeIgniter: Dos maneras de tener url’s amigables

16/02/2018

Enrutamiento en CodeIgniter: Dos maneras de tener url’s amigables

Una de las características que me encanta de CodeIgniter es el uso de url’s amigables. A pesar de que la configuración por defecto deje un «index.php» en la ruta. Esto es fácil de modificar para obviar esta parte por medio de una configuración del archivo «.htaccess». Hay que tener en cuenta que CodeIgniter usa el patrón MVC y que las url’s apuntan a los controladores en principio. Sin embargo, cada ruta debe ser registrada a nivel de variable en el archivo routes.php que se encuentra en la carpeta config. Analizando los detalles de esta herramienta me he encontrado que hay una alternativa al enrutamiento en CodeIgniter y no es necesario registrar todas las url.

Enrutamiento en CodeIgniter - url amigables
Photo by J_O_I_D

Opción por defecto en routes.php

En la documentación encontramos que por cada función de cada controlador hay un registro. Este enrutamiento en CodeIgniter tiene una ventaja y es en cuanto a personalización y seguridad. Por ejemplo, si tengo un controlador de noticias y las funciones de buscar, editar, crear y resumen en routes.php se pone lo siguiente:

$route[‘noticias’] = ‘noticias’;
$route[‘noticias/crear’] = ‘noticias/crear’;
$route[‘noticias/editar/(:any)’] = ‘noticias/editar/$1’;
$route[‘noticias/(:any)’] = ‘noticias/detalle/$1’;

En la variable va como se recibe la url en el navegador y a la derecha cómo se debe leer en el controlador. La variable «$1» es un comodín y sirve para indicar el posible identificador único o ID. Hay múltiples opciones para registrar la ruta donde la más destacada es el uso de expresiones regulares. En mi caso no he revisado en detalle el uso de estas ya que incluí una a una todas las rutas. El problema se presenta para cuando el sistema crece hay que incluir manualmente cada ruta, siendo algo improductivo.

Enrutamiento en CodeIgniter alternativo: El uso de la función _remap

Cuando un software está diseñado para instalar frecuentemente controladores la opción por defecto es un problema para automatizar este proceso. Buscando una alterativa para el enrutamiento en CodeIgniter resulta que hay una función llamada _remap. No estoy seguro si es propia de php o de CodeIgniter pero ayuda a resolver este inconveniente. En la configuración de rutas se requiere un controlador por defecto. En este podremos poner a funcionar el remap y se llamará antes que cualquier cosa. Entonces podremos redireccionar como queramos la url recibida así:

public function _remap($method, $params = array())
{
$method = strtolower(‘process_’.$method);
if (method_exists($this, $method))
{
return call_user_func_array(array($this, $method), $params);
}
(empty($this->uri->segment(2))) ? $this->index() : show_404();
}

Técnicamente se puede interpretar en que busca en las funciones del controlador la url enviada. El método es la primera variable y el resto serían parámetros. Luego busca si coincide con un método existente y lo redirecciona enviándole los parámetros. También hay que tener en cuenta que cuando la función es index se comporta diferente. En este caso la url puede que tenga menos variables entonces si viene vacía va directo al index. Por otro lado si no coincide nada lo mandamos a una página 404 que es un error de url no existente.

Cualquier inquietud puedes contactarme y yo estaré dispuesto a responder ¡Feliz Día!

Publicado en: Post Etiquetado como: Codeigniter, desarrollo de software, diseño web, mvc, Programación

Acerca de Alejandro Ortiz Vivas

Ingeniero de sistemas, consultor tecnológico, analista de plan de negocio y toma de decisiones. Emprendiendo en software empresarial especializado en productividad y estrategia.

Categorías del blog

  • Curso Virtual (13)
  • Kentana Core (21)
  • Noticias (53)
  • Podcast (33)
  • Post (93)

Freelance

  • Visita el Core Kentana
  • Trabaja Conmigo
  • Proyectos
    • Estados de proyectos para clientes
    • Proyecto Kentana
      • Core Firebird

Suscribete

  • Suscríbete al Blog
  • ivoox
  • Rss

Redes sociales

  • Facebook
  • Twitter
  • Linkedin
  • Podcast
  • Curso Virtual
  • Buscar

Copyright ©2026 · ortizvivas.com - Alejandro Ortiz Vivas