Uso de Routers en KumbiaPHP

KumbiaPHP como cualquier otro framework, hace uso del modo rewrite de apache, pero internamente cuentra con una clase llamada Router con la cual podemos crear url´s, las cuales se configuran en /app/config/rouerts.ini (Que por default biene desactivado),  en este post veremos unos ejemplo prácticos del uso de esta clase, y sobre todo una adecuación que realice para sacarle a un mas ventaja a esta clase.

 

 

El router que viene de ejemplo en routers.ini es:

/status/ = pages/show/

El cual al escribir la URL:  http://miDominio/status/  en realidad estará ejecutando la función show del controlador pages.

Podemos usar

Router::get(‘module’).”/”.Router::get(‘controller’).”/accion/parametros”

Entro de los enlaces, de esta manera si cambiamos el nombre del controlador o del modulo no afectaremos la navegación ya que esta estará tomando el nombre del modulo y controlador actual, de echo podremos llevarnos un controlador a otro modulo y la navegación funcionara de maravilla.

Ahora bien, veamos un ejemplo practico del Router con el cual nos ahorraremos mucho trabajo.

Supongamos que tenemos una aplicación para gestionar ventas, clientes y proveedores.

/app
–Views
—-Ventas
—-Clientes
—-Proveedores

Dicha aplicación nos genera reportes los cuales se encuentran y se mandan llamar de la siguiente manera.

ventas/reportes/deldia
ventas/reportes/mensual
clientes/reportes/deudores
clientes/reportes/foraneos
proveedores/reportes/foreneos

Por lo que tenemos en cada modulo un controlador llamado reportes_controller.php el cual gestionara los reportes de cada modulo.

Pero un día se nos ocurre la gran idea de reorganizar esto, por que hemos pensado que seria mejor y mas limpio tener un modulo que gestione todos los reportes existentes y por haber con la siguiente estructura:

app/
–Views
—-reportes
——clientes
——ventas
——proveedores

Entonces nos encontramos con un problema.

  • Actualizar los link que nos llevaran al nuevo modulo de los reportes
  • Una ves echo lo anterior nos quedarían las urls:

    reportes/ventas/deldia
    reportes/ventas/mensual
    reportes/clientes/deudores
    reportes/clientes/foraneos
    reportes/proveedores/foreneos

    Pero nos podemos evitar esto creando unos routers los cuales quedarían de la siguiente manera:

    ventas/reportes/*             = reportes/ventas/*
    ventas/reportes/*             = reportes/ventas/*
    clientes/reportes/*            = reportes/clientes/*
    clientes/reportes/*            = reportes/clientes/*
    proveedores/reportes/* = reportes/proveedores/*

    De esta manera solamente nos preocupamos por reorganizar los archivos y no los link, ya que haciendo uso de la tabla de enrutamiento, KumbiaPHP hará el resto (podemos enviar todos los parámetros necesarios).

    Recordemos que el nombre de las acciones deben ser iguales.

Artículo origen

Leave a Reply

Your email address will not be published. Required fields are marked *