El opuesto de hiddenOn: muestra el campo SOLO donde digas
visibleOn() es como decir «esta herramienta SOLO aparece en el garaje».
¿En qué se diferencia de hiddenOn()?
hiddenOn() dice «ocúltalo AQUÍ». visibleOn() dice «muéstralo SOLO AQUÍ». Es más directo cuando quieres que un campo aparezca en un solo lugar.
💡 Es como una lista blanca: solo los contextos que digas verán el campo.
El caso típico: botones de acción
A veces quieres un campo que SOLO se vea al crear un registro, como un campo de «términos y condiciones» que no tiene sentido al editar.
📍 Archivo: app/Filament/Resources/UsuarioResource.php
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/UsuarioResource.php
Checkbox::make('acepta_terminos')
->label('Acepto los términos y condiciones')
->required()
->visibleOn('create'),
🔍 Vamos a entender línea por línea (como si fuera la primera vez):
Checkbox::make('acepta_terminos')→ Creamos un checkbox (casilla de verificación) para aceptar términos. Es ese cuadrito que marcas con un ✓.
->label('Acepto los términos y condiciones')→ El texto que aparece junto al checkbox. Es lo que el usuario lee antes de marcar.
->required()→ Es obligatorio marcarlo. Si no lo marcan, el formulario no se envía.
->visibleOn('create')→ Aquí está la clave: «Este campo SOLO es visible en la página de CREAR». Al editar o ver, desaparece.
📊 Comparación: hiddenOn vs visibleOn
| Método | Qué hace | Cuándo usarlo |
|---|---|---|
| hiddenOn(‘create’) | Oculta en create, muestra en el resto | Cuando quieres ocultar en pocos lugares |
| visibleOn(‘create’) | Muestra SOLO en create, oculta en el resto | Cuando quieres mostrar en pocos lugares |
👆 Usa el que te resulte más natural pensar.
Mostrar en varios contextos
Puedes mostrar en múltiples páginas pasando un array:
->visibleOn(['create', 'edit']) // Visible al crear Y al editar
💡 Esto es útil cuando un campo debe verse en el formulario pero no en la vista de solo lectura.
📁 ¿Quieres ver el código completo del archivo? (opcional)
Esto es solo para que veas dónde va tu código. No necesitas memorizar todo esto:
// app/Filament/Resources/UsuarioResource.php
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')
->required(),
TextInput::make('email')
->email()
->required(),
// Este campo SOLO aparece al crear un nuevo usuario
Checkbox::make('acepta_terminos')
->label('Acepto los términos y condiciones')
->required()
->visibleOn('create'),
]);
}
🎉 ¿Qué aprendimos hoy?
visibleOn('create')muestra el campo SOLO en esa página- Es el opuesto de
hiddenOn() - Úsalo cuando quieras que un campo aparezca en pocos lugares específicos
- Puedes pasar un array:
visibleOn(['create', 'edit'])
Ya dominas los dos lados de la moneda: ocultar donde no quieres y mostrar donde sí. ¡Sigue así!