Por defecto, Filament usa el nombre del campo como etiqueta. Si tu campo se llama nombre, la etiqueta dice «Nombre». Pero a veces quieres algo más descriptivo, como «Nombre completo del cliente». Ahí entra label().
El problema del nombre técnico
Tu base de datos tiene nombres técnicos: razon_social, rfc, codigo_postal. Pero el usuario no entiende eso. Tú quieres que vea «Razón social», «RFC (Registro Federal de Contribuyentes)», «Código Postal».
💡 El nombre del campo es para TI (programador). El label es para ELLOS (usuarios).
El código para cambiar la etiqueta
Solo agregas ->label('Texto que quieres que vean').
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/Clientes/Schemas/ClienteForm.php
TextInput::make('razon_social')
->label('Razón social o nombre de la empresa')
🔍 Vamos a entender línea por línea:
TextInput::make('razon_social') → El campo se llama razon_social en la base de datos. Sin label, Filament mostraría «Razon Social» (con espacios, pero sin acentos).
->label('Razón social o nombre de la empresa') → Esto es lo que verá el usuario. Puedes usar acentos, espacios, y ser tan descriptivo como quieras.
📊 Nombre del campo vs Label:
| Nombre en BD | Label para el usuario |
|---|---|
razon_social |
Razón social |
rfc |
RFC (Registro Federal de Contribuyentes) |
cp |
Código Postal |
tel |
Teléfono (con código de país) |
¿Qué pasa si NO usas label()?
Filament es inteligente. Convierte codigo_postal en «Codigo Postal». Pero no pone acentos ni puede adivinar descripciones largas. Si necesitas algo más, usa label().
Ejemplos prácticos
// Campo con descripción extra
TextInput::make('telefono')
->label('Teléfono de contacto (incluye código de país)')
// Campo con instrucciones
TextInput::make('password')
->password()
->label('Contraseña (mínimo 8 caracteres)')
// Campo con nombre más amigable
TextInput::make('num_cuenta')
->label('Número de cuenta bancaria')
📁 ¿Quieres ver más ejemplos? (opcional)
Un formulario completo con labels personalizados:
return $schema->components([
TextInput::make('razon_social')
->label('Razón social')
->required(),
TextInput::make('rfc')
->label('RFC')
->maxLength(13),
TextInput::make('email')
->label('Correo electrónico principal')
->email(),
TextInput::make('telefono')
->label('Teléfono de contacto')
->tel(),
TextInput::make('cp')
->label('Código Postal')
->maxLength(5),
]);
🎉 ¿Qué aprendimos hoy?
->label('Texto')cambia la etiqueta que ve el usuario- El nombre del campo es técnico, el label es humano
- Sin label(), Filament convierte guiones bajos en espacios
- Puedes usar acentos, descripciones largas, e instrucciones
- Hace tus formularios más amigables y claros
En la siguiente lección vamos a OCULTAR la etiqueta con hiddenLabel(). ¡Nos vemos! 🚀