Cómo ocultar un campo según la página donde estés
hiddenOn() te deja ocultar campos según en qué «habitación» (página) estés.
¿Qué son los «contextos»?
En Filament, cada página es un contexto diferente: create (crear), edit (editar), view (ver). Con hiddenOn() puedes decir «oculta esto cuando estoy en X página».
💡 Es lo contrario de visible(), pero más específico para páginas.
El caso típico: campos que no se editan
Tienes un campo «fecha_creacion» que solo debe verse, nunca editarse. Lo ocultas en el formulario de edición.
📍 Archivo: app/Filament/Resources/ProductoResource.php
📝 ESTE ES EL CÓDIGO QUE VAMOS A APRENDER:
📍 Archivo: app/Filament/Resources/ProductoResource.php
TextInput::make('fecha_creacion')
->disabled()
->hiddenOn('create'),
🔍 Vamos a entender línea por línea (como si fuera la primera vez):
TextInput::make('fecha_creacion')→ Creamos un campo de texto para la fecha de creación. Normalmente la base de datos la pone automática.
->disabled()→ Lo ponemos como «solo lectura». El usuario no puede escribir en él, pero puede verlo.
->hiddenOn('create')→ Aquí está el truco: «Oculta este campo cuando estemos en la página de CREAR». ¿Por qué? Porque al crear, la fecha aún no existe.
📊 Dónde se ve y dónde no:
| Página | ¿Se ve el campo? | ¿Por qué? |
|---|---|---|
| Crear (create) | ❌ NO | hiddenOn(‘create’) lo oculta |
| Editar (edit) | ✅ SÍ | No está oculto en edit |
| Ver (view) | ✅ SÍ | No está oculto en view |
👆 El campo solo aparece donde tiene sentido: cuando el registro ya existe.
Otros contextos disponibles
Puedes usar varios contextos:
->hiddenOn('create') // Ocultar al crear
->hiddenOn('edit') // Ocultar al editar
->hiddenOn('view') // Ocultar al ver
💡 También puedes combinar: ->hiddenOn(['create', 'edit'])
📁 ¿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/ProductoResource.php
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('nombre')
->required(),
TextInput::make('precio')
->numeric()
->required(),
// Este campo solo aparece al editar, no al crear
TextInput::make('fecha_creacion')
->disabled()
->hiddenOn('create'),
]);
}
🎉 ¿Qué aprendimos hoy?
hiddenOn('create')oculta el campo en la página de crear- Los contextos son: create, edit, view
- Es útil para campos que no tienen sentido en ciertas páginas
- Puedes pasar un array para ocultar en varios contextos
Ahora ya puedes controlar en qué páginas aparece cada campo. ¡Vamos a la siguiente!