Elementos reusables con requestAction



En un proyecto que estoy desarrollando actualmente he decidido utilizar la técnica de elementos reusables. El gran beneficio de esta técnica es que el elemento puede ser reutilizado en otras vistas sin necesidad de enviarle datos desde el controlador ya que el elemento se encarga (por medio de requestAction) de obtener la información que requiere.
El único problema de esta técnica es que requestAction representa un golpe fuerte a la velocidad de procesamiento de la página, pero se puede solucionar de una manera sencilla:

Para usar requestAction sin temor de aumentar innecesariamente el número de request al servidor es necesario hacer uso del sistema de caching que CakePHP ofrece.

La aplicación que estoy desarrollando tiene en la página principal un listado de categorías que son las que hacen uso de este método, veamos primero el código elemento (APP/views/elements/categories.ctp):





    • class=

"top-category-list"


    • >









Como puedes ver, la lista de categorías provienen de una llamada a requestAction a CategoriesController::index el cual se comporta distinto (hace return) si el método fue solicitado por medio de requestAction (APP/controllers/categories_controller.php):





De este modo tenemos un elemento que sin importar en qué vista se encuentre va a mostrar los datos correctos ya que es él quien se encarga de obtenerlos. Por último, como les había dicho antes, les muestro la manera en que se puede usar el elemento utilizando el caching de CakePHP (cualquier vista):

De este modo obtenemos la lista de categorías pero el requestAction se ejecuta sólo una vez hasta que el cache venza (en este caso 365 días ya que se que esa lista no cambiará en ese tiempo). El formato de tiempo para el caché es el mismo que la función de PHP strtotime.

Entradas que pueden interesarte