Skip to content

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.

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.

Para rutas sencillas sin sintaxis compleja, puede utilizar el comando:

Terminal window
php artisan rk:route

Este 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' => true

Con 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.

¿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.

El paquete ofrece dos formas de organizar las rutas y navegacion

'support_file' => "object_file_tree"

Los nodos se anidan dentro del elemento items de su padre, creando una jerarquía visual clara.

'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'),
];

¿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.

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.

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”.

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.