En un post pasado se comento sobre el uso de los Routers en KumbiaPHP, pues bien resulta que desarrollando encontré en la necesidad de modificar cla Clase del Router para adaptarlo a mis necesidades y las que exigía el proyecto. antes de ir pasar y ver en que consistió esta modificación vemos un escenario del problema.

 

 

Su pongamos que estamos desarrollando un sistema para un inventario, en el cual es necesario dar de alta artículos, pero resulta que esta funcionalidad es necesaria tanto para el administrado, inventarios e incluso en las ventas (Vaya que me ha tocado). Entonces tenemos nuestro sistemas por módulos:

administrador/
ventas/
inventarios/

Por lo que las url deben ser.

http://dominio.liz.mx/administrador/nuevoArticulo
http://dominio.liz.mx/ventas/nuevoArticulo
http://dominio.liz.mx/inventarios/nuevoArticulo

Bueno el problema de la funcionalidad queda resulto con el uso de routers y seria algo como esto:

inventarios/nuevoArticulo/* = common/nuevoArticulo/*
ventas/nuevoArticulo/*= common/nuevoArticulo/*
administrador/nuevoArticulo/* = common/nuevoArticulo/*

Pero resulta que por políticas de la empresa es necesario llevar una bitácora de las acciones de los usuarios. por lo que no será difícil obtener el modulo, controlador y la acción que se esta ejecutando. El verdadero problema viene cuando registramos el modulo ya que todos (sin importar modulo y usuario) que dará registrado como common, pero esta información no le sirve a la empresa, por que lo que ella quiere saber es si entro desde inventarios, ventas o administrador.

¿Por que pasa esto?

Esto pasa por que KumbiaPHP se queda con el modulo destino y no desde el cual se esta invocando, ya que se podría llamar desde controlador sin modulo.

La solución

Conociendo nuestra necesidades y el como procesa KumbiaPHP las URL entonces es momento de hacer esta adecuación, por lo que antes de ser procesada la URL debemos de obtener el modulo origen para después reescribir el modulo destino.

y con esto nuestra aplicación seguirá funcionando de manera normal y obtendremos la bitácora que deseamos. y vaya que funciona.

Aquí les dejo él archivo con la solución.

Si tienen implementado ya funcionalidad y hacen uso del modu

Este archivo mantiene la la funcionalidad de kumbiaPHP, pero agrega la posibilidad de conocer el modulo origen al cual se le aplicara el rewrite.

https://gist.github.com/3960630

Este otro fue el que modifique, y como ya tenia un buen avance desarrollado, decidí sobre-escribir la variable “module”, para que mantuviera el modulo origen y así no me perjudicara. Teniendo conciencia de este cambio. Pero lo comparto por si alguien ya tiene un avance significativo y no quiere cambiar su código.

https://gist.github.com/3960622}

Para aplicar los cambios bastara con  con reemplazar el código del archivo /core/kumbia/router.php por el de las ligas.

Artículo origen

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *