Qué es el Action Pattern y por qué lo estoy usando en mis proyectos
Cuando empecé a armar mi proyecto (Jugo Lab), mi backend empezó a llenarse de lógica suelta por todos lados. Y claro… funcionaba, pero, se empezaba a ver desordenado, nada mantenible. En una mentoría me hablaron del Action Pattern, y fue como… “¡Ahhh, ahora todo tiene sentido!”
¿Qué es Action Pattern?
Sin tecnicismos raros, te lo cuento fácil:
Es separar en archivos pequeñitos y específicos la lógica que hace cosas muy puntuales en tu proyecto.
Por ejemplo:
→ “Quiero traer las imágenes del footer.”
En lugar de aventar todo ese código dentro de la ruta (y dejarlo ahí todo aplastado), mejor hago un archivo bonito que se llame algo como:
👉 GetFooterMenuImages.php
Y su única tarea es traer esas imágenes. Solo eso.
¿Por qué lo uso en mi proyecto JugoLab?
Mi archivo de rutas ya no parece jungla. Solo dice:
→ “Cuando pidan esto, ve y corre este action.”
Si mañana quiero cambiar cómo funciona, no me tengo que meter en todo el desastre. Solo abro ese archivito y listo.
Y lo más importante: es súper claro. Si alguien (o yo misma dentro de unos meses) ve mi código, entiende de volada qué hace cada cosa.

Te muestro un ejemplo de mi código:
Sin Action Pattern (caótico):
[
'pattern' => 'data-menu-images',
'method' => 'GET',
'action' => function () {
$site = kirby()->site();
return [
'especiales' => $site->imagen_especiales()->toFile()?->url(),
'frutal' => $site->imagen_frutal()->toFile()?->url(),
// y más cosas aquí pegadas...
];
}
],
Con Action Pattern (ordenadito):
[
'pattern' => 'blassandrea/footer/menu/images',
'method' => 'GET',
'action' => function() {
return (new App\Actions\GetFooterMenuImages)();
}
],
Y este es mi action
namespace App\Actions;
use Kirby\Cms\App;
class GetFooterMenuImages {
public function __invoke()
{
$site = App::instance()->site();
return [
'especiales' => $site->imagen_especiales()->toFile()?->url(),
'frutal' => $site->imagen_frutal()->toFile()?->url(),
'platillos' => $site->imagen_platillos()->toFile()?->url(),
'clasicos' => $site->imagen_clasicos()->toFile()?->url(),
'detox' => $site->imagen_detox()->toFile()?->url(),
];
}
}
De mí para ti (y para mi yo del futuro):
Si quieres que tu código respire, se vea ordenado y sea fácil de mantener, haz actions.
Estas cositas no solo hacen que tu código funcione… también hacen que tu proceso sea más limpio, más organizado y menos estresante.
Si te animas a probarlo, cuéntame.🚀💕