required() hace exactamente eso: le pone un asterisco rojo al campo y NO deja guardar si el usuario lo deja vacío. Es como un guardián que dice: «¡Oye, falta algo importante aquí!»
¿Por qué usar required?
Porque hay datos que NO pueden faltar. Un producto sin nombre no tiene sentido. Un cliente sin email no puedes contactarlo. Esos campos DEBEN estar llenos.
💡 El 80% de tus campos probablemente serán obligatorios. Es lo más común.
El código es súper simple
Solo agregas ->required() después del nombre del campo. Es como decir: «Este campo, hazlo obligatorio».
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/Productos/Schemas/ProductoForm.php
TextInput::make('nombre')->required()
🔍 Vamos a entender línea por línea:
TextInput::make('nombre') → Ya conoces esto: crea un campo de texto para la columna «nombre».
->required() → Este es el nuevo. Le dice a Filament: «Este campo es obligatorio». Filament hace tres cosas: (1) pone un asterisco rojo, (2) valida que no esté vacío, y (3) muestra error si lo dejan vacío.
¿Qué pasa si el usuario no lo llena?
Cuando el usuario intente guardar, Filament le mostrará un mensaje de error: «El campo nombre es obligatorio». Y NO le deja guardar hasta que lo llene. Es automático, tú no tienes que programar nada más.
📊 Así se ve el campo con required():
El asterisco rojo indica que es obligatorio
El mensaje de error personalizado
Si quieres cambiar el mensaje de error que aparece, puedes hacerlo así:
TextInput::make('nombre')
->required()
->validationMessages([
'required' => 'El nombre del producto es obligatorio, no lo olvides.',
])
📁 ¿Quieres ver el código completo del archivo? (opcional)
Fíjate dónde va el required():
return $schema->components([
TextInput::make('nombre')->required(), // 👈 obligatorio
TextInput::make('codigo')->required(), // 👈 también obligatorio
TextInput::make('notas'), // 👈 sin required, es opcional
]);
¿Cuándo NO usar required?
Cuando el dato es opcional. Por ejemplo: «Notas adicionales», «Segundo apellido», «Comentarios». Esos campos el usuario puede dejarlos vacíos sin problema.
🎉 ¿Qué aprendimos hoy?
->required()hace que un campo sea obligatorio- Filament muestra un asterisco rojo automáticamente
- Si el usuario lo deja vacío, NO puede guardar
- El mensaje de error se muestra automáticamente
- Puedes personalizar el mensaje con
validationMessages()
En la siguiente lección vamos a limitar cuántos caracteres puede escribir el usuario con maxLength(). ¡Nos vemos! 🚀