Skip to content

Configuración 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.

El primer valor define las ubicaciones donde se almacenarán sus controladores al ejecutar los comandos de creación:

Terminal window
php artisan rk:controller
# o su forma abreviada
php artisan rk:co

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

config/routingkit.php
'controllers_path' => [
base_path('app/Http/Controllers'),
base_path('app/Livewire')
],

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.

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.

config/routingkit.php
'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'
],
]
]
],
],
]

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.

ParámetroDescripción
default_nameNombre por defecto del controlador. Use {modelo} para sustitución automática
extensionExtensión del archivo (ej: .php)
stub_pathRuta al archivo de plantilla
stub_typeTipo de stub (actualmente solo ‘blade’)
rk_routeGenera rutas automáticamente
rk_navigationIncluye en navegación automática

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” = ProductoListController
  • Create{modelo}Controller + modelo “Usuario” = CreateUsuarioController

Si establece default_name en false, el sistema solicitará el nombre durante la ejecución.

ParámetroDescripción
extensionExtensión del archivo de vista (ej: .blade.php)
stub_pathRuta al archivo de plantilla de vista
stub_typeTipo de stub para la vista

El paquete proporciona variables predefinidas que están disponibles en todos los stubs y vistas:

VariablePropósitoAcceso
$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'] }}

Cree sus stubs en la carpeta routingkit/stubs. Tenga cuidado al manipular código PHP en Blade para evitar interpretaciones inesperadas:

routingkit/Stubs/simplecontroller.blade.php
{!! '<?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'] }}');
}
}

Use @verbatim para ignorar código Blade que debe aparecer literalmente en el archivo generado:

routingkit/Stubs/simpleview.blade.php
@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>
@endverbatim
  • Tipo de Stub: Actualmente solo se admiten stubs tipo ‘blade’
  • Escape de Código: Use @verbatim para 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