08 CRUD Módulo Empleados Create Store, Asignación de Rol Spatie Subida de archivos Laravel FullStack

Duración: 28 min
Módulo: Gestión de Módulos Base (Sucursales, Categorías y Empleados) Lección 2 de 6

Descripción

🔍 Lección 8: CRUD Módulo Empleados – Create, Store, Asignación de Rol Spatie y Subida de Archivos en Laravel 🚀

En este capítulo avanzamos hacia un módulo más complejo: la gestión de Empleados. A diferencia de los módulos anteriores, el alta de un empleado requiere una relación directa con la tabla de users, la asignación de un rol de permisos con Spatie y el almacenamiento de archivos (avatar) en el almacenamiento del sistema.

🎯 Lo realizado en este capítulo

  • 🛣️ Rutas Web y Navegación:
    • En routes/web.php, se añadieron las rutas RESTful para el EmpleadoController.
    • A diferencia de los módulos previos, se habilitó la ruta explícita Route::get('/empleados/{id}', [EmpleadoController::class, 'show']) para la vista detallada de perfiles.
    • Se integró la opción de Empleados dentro de la barra de navegación lateral (vertical-nav.blade.php).
  • 🎨 Incorporación de Iconos Bootstrap y Formulario Elegante:
    • En resources/views/layouts/includes/head.blade.php se importó la librería de Bootstrap Icons para mejorar los inputs visuales del formulario (input-group).
    • Se crearon las vistas Blade en resources/views/empleados/: index, create, edit y show.
  • ⚙️ Lógica Multitabla en el Método store (Inserción simultánea en 3 tablas):
    • 1. Creación en users: Se genera la cuenta de acceso concatenando nombres + apellidos para el username. El correo actúa como usuario y el número de documento de identidad se asigna como contraseña encriptada por defecto.
    • 2. Asignación de Rol (Spatie): Con $usuario->assignRole('empleado'), se vincula el nuevo usuario a la tabla model_has_roles.
    • 3. Registro en empleados: Se insertan los datos personales (teléfono, dirección, profesión, fecha de nacimiento, género) enlazando la clave foránea usuario_id.
  • 📁 Subida y Almacenamiento de Archivos (Avatar):
    • Se configuró el envío del formulario usando enctype="multipart/form-data".
    • Se ejecutó el comando en terminal php artisan storage:link para vincular la carpeta storage/app/public con el directorio accesible public/storage.
    • Se guarda la foto de perfil en el disco usando $request->file('avatar')->store('avatars', 'public').

🗄️ Próximo paso

En la Lección 9 completaremos las acciones restantes del CRUD de Empleados: la vista de detalle (show), la edición de perfiles (edit / update) y la eliminación (destroy), además de limpiar los seeders iniciales para mantener únicamente las cuentas administrativas del sistema.