Configuración de Controladores
Configuración de Rutas de Controladores
Section titled “Configuración de Rutas de Controladores”El punto de partida para trabajar con controladores son dos valores clave dentro del archivo de configuración que definen dónde se guardarán sus controladores y cómo se generarán.
Rutas de Controladores
Section titled “Rutas de Controladores”El primer valor define las ubicaciones donde se almacenarán sus controladores al ejecutar los comandos de creación:
php artisan rk:controller# o su forma abreviadaphp artisan rk:coAl crear un controlador, el sistema le preguntará en qué ubicación desea guardar el archivo. Puede navegar de forma interactiva entre las carpetas configuradas, crear nuevas carpetas durante la navegación y seleccionar la ubicación final para sus archivos.
'controllers_path' => [ base_path('app/Http/Controllers'), base_path('app/Livewire')],Sistema de Stubs Personalizados
Section titled “Sistema de Stubs Personalizados”Laravel utiliza internamente un sistema de plantillas llamadas “stubs” para generar archivos. Un stub es una plantilla donde se reemplazan valores específicos para crear el archivo final.
Concepto de Stubs
Section titled “Concepto de Stubs”Cuando ejecuta php artisan make:controller, Laravel resuelve automáticamente el namespace y nombre de la clase, creando un archivo a partir de una plantilla predefinida:
<?php
namespace {{ $namespace }};
use App\Http\Controllers\Controller;use Illuminate\Http\Request;
class {{ $className }} extends Controller{ public function index() { return view('{{ $viewName }}'); }}RoutingKit extiende esta funcionalidad permitiéndole crear sus propios stubs personalizados para controladores y vistas.
Configuración de Stubs
Section titled “Configuración de Stubs”'stubs' => [ 'simple_controller' => [ 'controllers' => [ [ 'default_name' => '{modelo}ListController', 'extension' => '.php', 'stub_path' => base_path('routingkit/Stubs/carpeta1/simplecontroller.blade.php'), 'stub_type' => 'blade', 'rk_route' => true, 'rk_navigation' => true, 'views' => [ [ 'extension' => '.blade.php', 'stub_path' => base_path('routingkit/Stubs/carpeta1/simpleviewcontroller.blade.php'), 'stub_type' => 'blade' ], ] ] ], ],]Estructura de Recursos
Section titled “Estructura de Recursos”Cada recurso en la configuración representa una unidad completa de controladores y vistas asociadas. Esto permite crear automáticamente varios controladores con sus respectivas vistas si su flujo de trabajo lo requiere.
Configuración de Controladores
Section titled “Configuración de Controladores”| Parámetro | Descripción |
|---|---|
default_name | Nombre por defecto del controlador. Use {modelo} para sustitución automática |
extension | Extensión del archivo (ej: .php) |
stub_path | Ruta al archivo de plantilla |
stub_type | Tipo de stub (actualmente solo ‘blade’) |
rk_route | Genera rutas automáticamente |
rk_navigation | Incluye en navegación automática |
Sustitución de Variables
Section titled “Sustitución de Variables”El sistema permite usar {modelo} en el nombre del controlador, que se sustituye por el nombre de la clase del modelo seleccionado:
Ejemplos de sustitución:
{modelo}ListController+ modelo “Producto” =ProductoListControllerCreate{modelo}Controller+ modelo “Usuario” =CreateUsuarioController
Si establece default_name en false, el sistema solicitará el nombre durante la ejecución.
Configuración de Vistas
Section titled “Configuración de Vistas”| Parámetro | Descripción |
|---|---|
extension | Extensión del archivo de vista (ej: .blade.php) |
stub_path | Ruta al archivo de plantilla de vista |
stub_type | Tipo de stub para la vista |
Variables Disponibles en Stubs
Section titled “Variables Disponibles en Stubs”El paquete proporciona variables predefinidas que están disponibles en todos los stubs y vistas:
| Variable | Propósito | Acceso |
|---|---|---|
$data['controller']['folder'] | Carpeta del controlador | {{ $data['controller']['folder'] }} |
$data['controller']['className'] | Nombre de la clase | {{ $data['controller']['className'] }} |
$data['controller']['namespace'] | Namespace del controlador | {{ $data['controller']['namespace'] }} |
$data['controller']['fullNamespace'] | Namespace completo | {{ $data['controller']['fullNamespace'] }} |
$data['controller']['path'] | Ruta completa del archivo | {{ $data['controller']['path'] }} |
$data['controller']['viewName'] | Nombre de la vista asociada | {{ $data['controller']['viewName'] }} |
$data['view']['path'] | Ruta de la vista | {{ $data['view']['path'] }} |
$data['view']['viewName'] | Nombre de la vista | {{ $data['view']['viewName'] }} |
$data['view']['folder'] | Carpeta de la vista | {{ $data['view']['folder'] }} |
$data['view']['fileName'] | Nombre del archivo de vista | {{ $data['view']['fileName'] }} |
$data['model']['namespace'] | Namespace del modelo | {{ $data['model']['namespace'] }} |
$data['model']['class'] | Clase del modelo | {{ $data['model']['class'] }} |
$data['model']['full'] | Namespace completo del modelo | {{ $data['model']['full'] }} |
Ejemplos de Stubs
Section titled “Ejemplos de Stubs”Stub de Controlador
Section titled “Stub de Controlador”Cree sus stubs en la carpeta routingkit/stubs. Tenga cuidado al manipular código PHP en Blade para evitar interpretaciones inesperadas:
{!! '<?php' !!}
namespace {{ $data['controller']['namespace'] }};
use App\Http\Controllers\Controller;use Illuminate\Http\Request;
class {{ $data['controller']['className'] }} extends Controller{ public function index() { return view('{{ $data['view']['viewName'] }}'); }}Stub de Vista
Section titled “Stub de Vista”Use @verbatim para ignorar código Blade que debe aparecer literalmente en el archivo generado:
@verbatim<x-layouts.app>@endverbatim {{-- Contenido del controlador: {{ $data['controller']['className'] }} --}} <div class="container"> <h1>Vista generada automáticamente</h1> </div>@verbatim</x-layouts.app>@endverbatimConsideraciones Importantes
Section titled “Consideraciones Importantes”- Tipo de Stub: Actualmente solo se admiten stubs tipo ‘blade’
- Escape de Código: Use
@verbatimpara código que no debe ser interpretado por Blade - Variables Futuras: La inyección de variables personalizadas se implementará en versiones posteriores
- Navegación Interactiva: Puede crear carpetas durante el proceso de selección de ubicación