maxLength() hace lo mismo pero con texto. Le dices: «Este campo solo acepta 255 caracteres». Si el usuario intenta escribir más, Filament le dice: «¡Epa, ya no caben más!»
¿Por qué limitar los caracteres?
Porque tu base de datos tiene límites. Si definiste una columna como string('nombre'), Laravel la crea con máximo 255 caracteres. Si alguien escribe 300, los últimos 45 se pierden o causa error. Mejor prevenir.
💡 También es útil para cosas como códigos cortos, abreviaturas, o campos que deben ser breves.
El código con el número máximo
Solo agregas ->maxLength(255) y listo. El número es la cantidad máxima de caracteres.
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/Productos/Schemas/ProductoForm.php
TextInput::make('nombre')
->required()
->maxLength(255)
🔍 Vamos a entender línea por línea:
TextInput::make('nombre') → El campo de texto para el nombre.
->required() → Es obligatorio, no puede estar vacío.
->maxLength(255) → Máximo 255 caracteres. Si el usuario escribe 256, Filament muestra error: «El nombre no puede tener más de 255 caracteres».
¿Cómo se ve en el formulario?
Filament muestra un contador de caracteres mientras el usuario escribe. Ve algo como: «150/255». Así el usuario sabe cuánto espacio le queda.
📊 Ejemplos de límites comunes:
| Tipo de campo | maxLength recomendado |
|---|---|
| Nombre corto (código, abreviatura) | 10-50 |
| Nombre normal | 100-255 |
| 255 | |
| Teléfono | 20 |
| Código postal | 10 |
Combinar con minLength()
A veces quieres un mínimo Y un máximo. Por ejemplo, una contraseña debe tener entre 8 y 20 caracteres:
TextInput::make('password')
->password()
->minLength(8)
->maxLength(20)
📁 ¿Quieres ver más ejemplos? (opcional)
Diferentes campos con diferentes límites:
return $schema->components([
TextInput::make('codigo')
->required()
->maxLength(10), // Códigos cortos
TextInput::make('nombre')
->required()
->maxLength(255), // Nombres normales
TextInput::make('telefono')
->tel()
->maxLength(20), // Teléfonos
TextInput::make('email')
->email()
->maxLength(255), // Emails
]);
Un detalle importante
El límite debe coincidir con tu base de datos. Si tu columna es $table->string('nombre', 100), entonces usa maxLength(100). Si pones 255, el usuario podría escribir más de lo que cabe en la base de datos.
🎉 ¿Qué aprendimos hoy?
->maxLength(255)limita la cantidad de caracteres- Filament muestra un contador mientras el usuario escribe
- El límite debe coincidir con tu base de datos
- También existe
minLength()para un mínimo - Útil para campos que deben ser cortos o tienen límite físico
En la siguiente lección vamos a validar que un campo sea un email válido con email(). ¡Nos vemos! 🚀