70 lines
1.7 KiB
Markdown
70 lines
1.7 KiB
Markdown
---
|
|
title: Select column
|
|
---
|
|
import AutoScreenshot from "@components/AutoScreenshot.astro"
|
|
|
|
## Overview
|
|
|
|
The select column allows you to render a select field inside the table, which can be used to update that database record without needing to open a new page or a modal.
|
|
|
|
You must pass options to the column:
|
|
|
|
```php
|
|
use Filament\Tables\Columns\SelectColumn;
|
|
|
|
SelectColumn::make('status')
|
|
->options([
|
|
'draft' => 'Draft',
|
|
'reviewing' => 'Reviewing',
|
|
'published' => 'Published',
|
|
])
|
|
```
|
|
|
|
<AutoScreenshot name="tables/columns/select/simple" alt="Select column" version="3.x" />
|
|
|
|
## Validation
|
|
|
|
You can validate the input by passing any [Laravel validation rules](https://laravel.com/docs/validation#available-validation-rules) in an array:
|
|
|
|
```php
|
|
use Filament\Tables\Columns\SelectColumn;
|
|
|
|
SelectColumn::make('status')
|
|
->options([
|
|
'draft' => 'Draft',
|
|
'reviewing' => 'Reviewing',
|
|
'published' => 'Published',
|
|
])
|
|
->rules(['required'])
|
|
```
|
|
|
|
## Disabling placeholder selection
|
|
|
|
You can prevent the placeholder from being selected using the `selectablePlaceholder()` method:
|
|
|
|
```php
|
|
use Filament\Tables\Columns\SelectColumn;
|
|
|
|
SelectColumn::make('status')
|
|
->options([
|
|
'draft' => 'Draft',
|
|
'reviewing' => 'Reviewing',
|
|
'published' => 'Published',
|
|
])
|
|
->selectablePlaceholder(false)
|
|
```
|
|
|
|
## Lifecycle hooks
|
|
|
|
Hooks may be used to execute code at various points within the select's lifecycle:
|
|
|
|
```php
|
|
SelectColumn::make()
|
|
->beforeStateUpdated(function ($record, $state) {
|
|
// Runs before the state is saved to the database.
|
|
})
|
|
->afterStateUpdated(function ($record, $state) {
|
|
// Runs after the state is saved to the database.
|
|
})
|
|
```
|