default() hace exactamente eso: pre-llena el campo con un valor. Cuando el usuario abre el formulario, el campo ya tiene algo escrito. Puede cambiarlo o dejarlo así.
¿Cuándo usar un valor por defecto?
Cuando la mayoría de los registros tienen el mismo valor. Por ejemplo: si el 90% de tus clientes son de México, tiene sentido que «País» ya diga «México». Si la mayoría de productos tienen stock 0 al crearlos, ¿por qué obligar al usuario a escribir 0?
💡 Ahorras clics y reduces errores de escritura.
El código con el valor predefinido
Solo agregas ->default('valor') y el campo aparece pre-llenado.
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/Productos/Schemas/ProductoForm.php
TextInput::make('stock')
->numeric()
->default(0)
🔍 Vamos a entender línea por línea:
TextInput::make('stock') → Un campo para el stock del producto.
->numeric() → Solo acepta números (ya lo veremos en detalle más adelante).
->default(0) → Cuando el usuario abre el formulario para crear un producto, el campo stock ya tiene un 0. No tiene que escribirlo.
📊 Ejemplos de valores por defecto comunes:
| Campo | default() recomendado |
|---|---|
| stock | ->default(0) |
| pais | ->default('México') |
| moneda | ->default('MXN') |
| activo (toggle) | ->default(true) |
| orden | ->default(1) |
Un detalle importante
El valor por defecto solo aparece cuando CREAS un registro nuevo. Cuando EDITAS un registro existente, el campo muestra el valor guardado, no el default. Tiene sentido, ¿no?
Valores dinámicos
A veces quieres un valor por defecto que no es fijo. Por ejemplo, la fecha de hoy:
TextInput::make('fecha')
->default(now()->format('Y-m-d'))
// O el año actual
TextInput::make('anio')
->default(date('Y'))
📁 ¿Quieres ver más ejemplos? (opcional)
Un formulario con varios valores por defecto:
return $schema->components([
TextInput::make('codigo')
->default('PROD-' . str_pad(random_int(1, 9999), 4, '0', STR_PAD_LEFT)),
TextInput::make('stock')
->numeric()
->default(0),
TextInput::make('moneda')
->default('MXN'),
Toggle::make('activo')
->default(true),
TextInput::make('orden')
->numeric()
->default(1),
]);
🎉 ¿Qué aprendimos hoy?
->default('valor')pre-llena el campo con un valor- Solo aparece al CREAR un registro nuevo
- Ahorra tiempo al usuario en campos comunes
- Puedes usar valores dinámicos como fechas
- Reduce errores de escritura
En la siguiente lección vamos a poner texto guía dentro del campo con placeholder(). ¡Nos vemos! 🚀