Algunas mejoras en las listas de Filament.
Description (o linea adicional en la celda)
 Tables\Columns\TextColumn::make('name')->searchable()->sortable()->wrap()
                ->description(fn (Repository $record): string => $record->institution->name??'')
Badges (distintivo) en campo de tipo texto
//campo type tiene varios valores definidos en un array (ojs->OJS, etc) 
Tables\Columns\BadgeColumn::make('type')->enum(Repository::$typesform),
Ocultar columnas
con el método ->toggleable(isToggledHiddenByDefault: true) se puede ocultar la Columna y luego activarla desde el ícono de la derecha.
Actualizar valor desde la tabla
Con el método action se puede disparar una actualizacion en la celda.
    ->action(function($record, $column) {
        $name = $column->getName();
        $record->update([
            $name => !$record->$name
        ]);
    });
Definir orden default
// en la definición del recurso 
protected function getDefaultTableSortColumn(): ?string
        {
            return 'id';
        }
    protected function getDefaultTableSortDirection(): ?string
        {
            return 'desc';
        }
Enlazar a otro modelo
Se puede crear una macro en el método Boot de AppServiceProvider y enlazar entre modelos usando la función linkRecord luego. Fuente (el modelo dependiente está conectado al modelo institution con la columna name)
en lugar de
Tables\Columns\TextColumn::make('institution.name')
->url(fn (Library $record): string => route('filament.resources.institutions.view', ['record' => $record->institution_id]))
Se puede usar
Tables\Columns\TextColumn::make('institution.name')->linkRecord('view')



    
Top comments (0)