Campos requeridos condicionalmente según contexto en Filament
Uno de los casos con los que más nos encontramos en Calima con Filament es la gestión de usuarios. Normalmente queremos que, al crear un usuario, su contraseña sea obligatoria. Sin embargo, una vez creado, para editarlo no necesita rellenarla desde el panel.
Para hacer esto en Filament, podemos especificar un contexto en el cual el campo es requerido o no:
<?php
namespace App\Filament\Resources;
use App\Models\User;
use Filament\Forms;
use Filament\Resources\Form;
use Filament\Resources\Resource;
use Illuminate\Support\Facades\Hash;
class UserResource extends Resource
{
protected static ?string $model = User::class;
protected static ?string $navigationIcon = 'heroicon-o-user';
public static function form(Form $form): Form
{
return $form
->schema([
// ...
Forms\Components\TextInput::make('password')
->required(fn (string $context) => $context === 'create')
->dehydrateStateUsing(fn ($state) => Hash::make($state))
->dehydrated(fn ($state) => filled($state))
->password(),
// ...
]);
}
// ...
}