Jenner Acosta Diaz
Laravel 10

Form Request

En Laravel, un Form Request es una clase que se utiliza para manejar la lógica de validación de formularios antes de procesar la solicitud real. Proporciona una forma conveniente de validar los datos de solicitud entrantes y te permite centralizar las reglas de validación.

Cuando se envía una solicitud HTTP a una ruta Laravel, puedes definir un Form Request como un tipo de parámetro en el controlador correspondiente. Laravel se encargará automáticamente de instanciar y validar el Form Request antes de ejecutar el método del controlador. Esto significa que no tienes que preocuparte por realizar manualmente la validación de formularios en cada controlador.

Un Form Request en Laravel es una clase que extiende la clase base Illuminate\Foundation\Http\FormRequest. Dentro de esta clase, puedes definir diferentes métodos para personalizar el comportamiento de validación y autorización.

El método authorize() se utiliza para determinar si el usuario está autorizado para realizar la solicitud. Puedes implementar la lógica de autorización en este método y devolver true si el usuario tiene permiso para enviar la solicitud, o false si no está autorizado.

El método rules() se utiliza para definir las reglas de validación para los campos del formulario. Aquí puedes especificar las reglas utilizando la sintaxis de Laravel Validation. Por ejemplo, puedes definir una regla que requiera que un campo sea obligatorio y sea una cadena de texto.

Además de los métodos authorize() y rules(), también puedes definir otros métodos para personalizar el comportamiento de validación. Por ejemplo:

Después de definir tu Form Request, puedes utilizarlo en tu controlador simplemente agregándolo como parámetro en el método del controlador. Laravel se encargará de manejar la validación automáticamente y solo ejecutará el método del controlador si la validación es exitosa. En caso de que la validación falle, Laravel redirigirá automáticamente al usuario a la página anterior y mostrará los mensajes de error apropiados.

En resumen, Laravel Form Request es una clase que te permite centralizar la lógica de validación de formularios en tu aplicación Laravel. Al definir las reglas de validación en un Form Request, Laravel se encarga de realizar la validación automáticamente antes de ejecutar el código del controlador, lo que simplifica el proceso de validación y te ayuda a mantener un código más limpio y organizado.

Ejemplo

Supongamos que tienes un formulario de contacto con dos campos: «nombre» y «correo electrónico». Quieres validar que ambos campos sean obligatorios y que el campo de correo electrónico sea una dirección de correo electrónico válida.

Paso 1: Crear el Form Request
En tu línea de comandos o terminal, ejecuta el siguiente comando para generar el Form Request:

php artisan make:request ContactFormRequest

Esto generará un nuevo archivo llamado ContactFormRequest.php en el directorio app/Http/Requests. Abre ese archivo y actualízalo con el siguiente contenido:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ContactFormRequest extends FormRequest
{
    public function authorize()
    {
        return true; // Permitir que cualquier usuario realice la solicitud
    }

    public function rules()
    {
        return [
            'nombre' => 'required',
            'correo' => 'required|email',
        ];
    }
}

Paso 2: Utilizar el Form Request en el controlador
A continuación, supongamos que tienes un controlador llamado ContactController con un método store() que maneja el envío del formulario de contacto. Actualiza ese método para incluir el uso del Form Request:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\ContactFormRequest;

class ContactController extends Controller
{
    public function store(ContactFormRequest $request)
    {
        // El Form Request se ha validado correctamente
        // Procesa el envío del formulario de contacto aquí

        // Acceder a los datos validados del formulario
        $nombre = $request->input('nombre');
        $correo = $request->input('correo');

        // Realiza acciones adicionales, como guardar en la base de datos o enviar un correo electrónico

        // Redirige al usuario a alguna página de éxito o muestra un mensaje de confirmación
    }
}

En este ejemplo, hemos importado y utilizado el ContactFormRequest en el método store() del ContactController. Laravel se encargará automáticamente de validar los campos del formulario antes de que se ejecute el código del controlador. Si la validación falla, Laravel redirigirá al usuario a la página anterior con los mensajes de error correspondientes.

Así es como puedes utilizar un Laravel Form Request para validar formularios de manera centralizada en tu aplicación Laravel. Puedes personalizar los mensajes de error, las reglas de validación y agregar más lógica según tus necesidades específicas.