Conceptos clave
Laravel Routing Kit se fundamenta en la creación automática de recursos organizados en cuatro pilares principales: rutas, navegación, asignación de permisos, controladores y plantillas.
Esta sección presenta los conceptos fundamentales con los que está construido el paquete. Cada concepto cuenta con una sección detallada que explica en profundidad su implementación y uso práctico.
Fundamentos conceptuales
Section titled “Fundamentos conceptuales”Las rutas en Laravel Routing Kit funcionan como un conjunto de nodos organizados en estructura de árbol que crean puntos de acceso en su aplicación Laravel.
¿Por qué creamos esta abstracción?
La razón principal es la creación interactiva de rutas. Aunque hubiéramos preferido trabajar directamente con la sintaxis completa de Laravel, su riqueza y complejidad hace impractical crear una implementación extensiva para cada caso de uso posible.
Siéntase seguro de que internamente el paquete utiliza toda la robustez de las rutas Laravel. Nosotros simplemente proporcionamos un builder personalizado que convierte la configuración a rutas Laravel nativas, pero con una sintaxis más amigable para la creación interactiva.
Escenarios de uso prácticos
Section titled “Escenarios de uso prácticos”Caso 1: Rutas con valores primitivos
Section titled “Caso 1: Rutas con valores primitivos”Para rutas sencillas sin sintaxis compleja, puede utilizar el comando:
php artisan rk:routeEste enfoque funciona excelentemente cuando trabaja con valores primitivos (strings, arrays simples, enteros, booleanos). El algoritmo reemplaza estos valores en stubs predefinidos.
Ejemplo de configuración básica:
RkRoute::make('dashboard') ->setParentId('parent_Id') ->setAccessPermission('acceder-dashboard_central') ->setUrl('/dashboard_central') ->setUrlMethod('get') ->setUrlController('App\Livewire\Central\Dashboard\Home\Home') ->setRoles(['admin_general']) ->setItems([]) ->setEndBlock('dashboard'),Para este escenario, configure en su archivo de configuración:
'only_string_support' => trueCon esta configuración, las rutas se construyen exclusivamente con valores primitivos, y la carga para reconstruirlas utiliza valores leídos directamente desde PHP sin expresiones regulares.
Caso 2: Rutas con lógica compleja
Section titled “Caso 2: Rutas con lógica compleja”¿Cuándo necesita valores no primitivos?
Cuando requiere agregar lógica adicional, imports de clases o middleware personalizados. En estos casos, ya no está limitado a valores primitivos.
Ejemplo con middleware personalizado:
<?php
use Laravel\WorkOS\Http\Middleware\ValidateSessionWithWorkOS;use Rk\RoutingKit\Entities\RkRoute;
return [ RkRoute::makeGroup('auth') ->setUrlMiddleware(['web', 'auth', ValidateSessionWithWorkOS::class]) ->setParentId('central_app') ->setItems([ RkRoute::make('dashboard') ->setParentId('auth') ->setAccessPermission('acceder-dashboard_central') ->setUrl('/dashboard_central') ->setUrlMethod('get') ->setUrlController('App\Livewire\Central\Dashboard\Home\Home') ->setRoles(['admin_general']) ->setItems([]) ->setEndBlock('dashboard'), ]) ->setEndBlock('auth')];Para este escenario, configure:
'only_string_support' => false¿Cómo funciona internamente?
El paquete recupera el contenido usando expresiones regulares para encontrar cada valor del elemento, desde el inicio del bloque hasta donde termina. Es crucial asignar correctamente setEndBlock() en el lugar correspondiente al cierre del objeto.
Estructuras de organización
Section titled “Estructuras de organización”El paquete ofrece dos formas de organizar las rutas y navegacion
Estructura jerárquica (Tree)
Section titled “Estructura jerárquica (Tree)”'support_file' => "object_file_tree"Los nodos se anidan dentro del elemento items de su padre, creando una jerarquía visual clara.
Estructura plana (Plain)
Section titled “Estructura plana (Plain)”'support_file' => "object_file_plain"Las rutas se almacenan en el mismo nivel, utilizando parentId para establecer relaciones:
<?php
use Laravel\WorkOS\Http\Middleware\ValidateSessionWithWorkOS;use Rk\RoutingKit\Entities\RkRoute;
return [ RkRoute::makeGroup('auth') ->setUrlMiddleware(['web', 'auth', ValidateSessionWithWorkOS::class]) ->setParentId('central_app') ->setItems([]) ->setEndBlock('auth'),
RkRoute::make('dashboard') ->setParentId('auth') ->setAccessPermission('acceder-dashboard_central') ->setUrl('/dashboard_central') ->setUrlMethod('get') ->setUrlController('App\Livewire\Central\Dashboard\Home\Home') ->setRoles(['admin_general']) ->setItems([]) ->setEndBlock('dashboard'),];Consideraciones importantes
Section titled “Consideraciones importantes”¿Por qué es útil el parent_id en items?
La funcionalidad de parent_id en items es principalmente útil para organización visual y permite al paquete convertir cualquier nodo en su estructura jerárquica correcta internamente.
Navegacion
Section titled “Navegacion”La navegación sigue los mismos principios de estructura de archivos y métodos de almacenamiento que las rutas. Para una explicación detallada sobre la implementación y uso de la navegación, consulte la sección correspondiente en esta documentación.
permisos
Section titled “permisos”El paquete ofrece la capacidad de definir permisos de manera centralizada en un solo punto de configuración. Esta funcionalidad se integra directamente con el sistema de rutas, permitiendo asignar permisos específicos a cada ruta de forma declarativa. Para información detallada sobre la configuración y gestión de permisos, consulte la sección “Rutas y Permisos”.
controladores
Section titled “controladores”Los controladores en Laravel Routing Kit siguen patrones específicos de implementación que facilitan su integración con el sistema de rutas y navegación. Encontrará información detallada sobre la configuración, creación y uso de controladores en la sección dedicada de esta documentación.