Form Request
Comprar curso

109. Form Request

En este capítulo, aprenderás cómo utilizar Form Request en Laravel 10 para validar los datos de entrada de una forma centralizada. Descubre cómo crear y utilizar un Form Request para validar los datos de entrada antes de procesarlos en el controlador.


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    Cuando trabajas con Laravel 10, es importante asegurarte de que los datos de entrada de tu aplicación web sean válidos antes de procesarlos. Para lograr esto, Laravel ofrece una herramienta llamada Form Request, que te permite validar los datos de entrada de una forma centralizada y reutilizable en múltiples controladores.

    Para crear un Form Request en Laravel 10, simplemente ejecuta el siguiente comando Artisan en la terminal:

    php artisan make:request ValidarDatosEntrada

    Este comando creará un archivo llamado "ValidarDatosEntrada.php" en la carpeta "app/Http/Requests". En este archivo, encontrarás una clase que extiende la clase "Illuminate\Foundation\Http\FormRequest" y un método "rules()" que define las reglas de validación para los datos de entrada. Por ejemplo:

    namespace App\Http\Requests;
    use Illuminate\Foundation\Http\FormRequest;
    class ValidarDatosEntrada extends FormRequest
    {
       public function rules()
       {
           return [
               'nombre' => 'required|string|max:255',
               'email' => 'required|email|unique:users,email',
               'edad' => 'required|integer|min:18',
           ];
       }
    }

    En este ejemplo, el método "rules()" define las reglas de validación para los campos de entrada "nombre", "email" y "edad". Las reglas incluyen la validación de que los campos son obligatorios, que el correo electrónico es válido y único en la tabla "users", y que la edad es un número entero mayor o igual a 18.

    Una vez que has creado tu Form Request, puedes utilizarlo en cualquier controlador que procese los datos de entrada. Para hacer esto, simplemente agrega la clase del Form Request como una dependencia del método del controlador correspondiente. Por ejemplo:

    namespace App\Http\Controllers;
    use App\Http\Requests\ValidarDatosEntrada;
    use Illuminate\Http\Request;
    class ControladorDatosEntrada extends Controller
    {
       public function procesarDatos(ValidarDatosEntrada $request)
       {
           // El código para procesar los datos de entrada se coloca aquí
       }
    }

    En este ejemplo, el método "procesarDatos()" utiliza el Form Request "ValidarDatosEntrada" para validar los datos de entrada antes de procesarlos. Si los datos no pasan la validación, se generará un mensaje de error de validación y el usuario será redirigido de vuelta al formulario.

    En resumen, Form Request es una herramienta útil en Laravel 10 para validar los datos de entrada de forma centralizada y reutilizable en múltiples controladores. Utilízalo para mejorar la integridad de tus datos y simplificar el proceso de validación en tu aplicación web.

  • Luis Angel Rojas Espinoza

    Luis Angel Rojas Espinoza hace 11 meses

    Disculpe profesor, ¿cómo podemos crear reglas de validación personalizadas?. Es decir, verificar si los datos de entrada cumplen con cosas que nosotros queremos específicamente, por ejemplo, que se válide una formula matemática o algo personal.

    • Victor Arana Flores hace 11 meses

      Hola Luis. Puedes crear una nueva regla ejecutando php artisan make:rule NombreRule

      Y ahi puedes definirla. Lo he enseñado en el curso, pero no recuerdo en que capitulo.

    • Victor Arana Flores hace 11 meses

      Te doy un ejemplo de como se usa. Primero creamos el archivo de regla, así

      php artisan make:rule CompanyExist

      Luego agregamos la regla de validación así

      $request->validate([
      
      	'company' => [
      		'required',
      		new CompanyExist
      	]
      ]);

      (Asegurate de importar la definición). 

      Por ultimo creamos la regla en el archivo que hemos creado.

      public function validate(string $attribute, mixed $value, Closure $fail): void
      {
              
      	if (Company::where('ruc', $value)->doesntExist()) {
      		$fail('La empresa no existe.');
      	}
      
      }

      Si no se ejecuta la linea $fail('La empresa no existe.') significa que pasó la validación.