Error al utilizar la clase "FormRequest" en Laravel

Publicado por Lynn
hace 11 meses

Hola a todos,

Estoy tratando de utilizar la clase "FormRequest" de Laravel para validar los datos recibidos en un formulario antes de guardarlos en la base de datos. Sin embargo, estoy enfrentando un error al intentar hacerlo.

Aquí está mi código en el controlador:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\CreateUserRequest;
use App\Models\User;

class UserController extends Controller
{
    public function store(CreateUserRequest $request)
    {
        // Guardar usuario en la base de datos
        User::create($request->validated());

        // Redirigir al usuario a otra página
        return redirect()->route('users.index')->with('success', 'Usuario creado exitosamente');
    }
}

Y aquí está mi clase "CreateUserRequest":

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CreateUserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ];
    }
}

Cuando envío el formulario, obtengo el siguiente error:

Class Illuminate\Foundation\Http\FormRequest does not exist

He verificado que la clase "FormRequest" exista en la carpeta "vendor/laravel/framework/src/Illuminate/Foundation/Http", así que no entiendo por qué está lanzando este error. También tengo instalada la versión más reciente de Laravel a través de Composer.

¿Alguien ha enfrentado este problema antes? Agradecería mucho su ayuda para resolverlo.

¡Gracias de antemano!

Laravel FormRequest Validación
Respuesta de Gordon Shumway
hace 11 meses

Hola Lynn,

Por lo que describes, parece que el error está relacionado con el autoloading de Composer. La clase FormRequest debería cargarse automáticamente si está presente en tu proyecto de Laravel y Composer está configurado correctamente.

Aquí van un par de pasos que puedes seguir para solucionar el problema:

  1. Ejecuta composer dump-autoload: Esto regenera la lista de todas las clases que necesitan ser incluidas en el proyecto (autoloading).

    composer dump-autoload
  2. Revisa las rutas de namespaces: Asegúrate de que el namespace de tu clase CreateUserRequest corresponda con la estructura de tu directorio. Es decir, si tu clase se encuentra en el directorio app/Http/Requests, entonces el namespace debería ser App\Http\Requests.

  3. Verifica la existencia de FormRequest en tu proyecto: Si estás trabajando en un servidor, confirma que los archivos estén presentes y que no haya sido un error de despliegue.

    ls vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php

    Si el archivo no existe, entonces puede que necesites reinstalar las dependencias de composer:

    composer install
  4. Revisa las mayúsculas y minúsculas: El sistema de archivos de tu servidor podría ser sensible a mayúsculas/minúsculas. Asegúrate de que el uso de mayúsculas y minúsculas al referenciar la clase FormRequest sea consistente.

  5. Comprueba si tu versión de Laravel es compatible: Finalmente, verifica la versión de Laravel que estás utilizando y compárala con la documentación para asegurarte de que la función que estás tratando de utilizar está disponible en tu versión.

Si después de seguir estos pasos todavía enfrentas problemas, por favor proporciona más información sobre el entorno donde estás ejecutando tu aplicación Laravel (versión de PHP, versión de Laravel, servidor local o en producción, etc.) para poder darte una ayuda más precisa.