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)