Introduction
The text input column allows you to render a text input inside the table, which can be used to update that database record without needing to open a new page or a modal:Validation
You can validate the input by passing any Laravel validation rules in an array:Customizing the HTML input type
You may use thetype() method to pass a custom HTML input type:
Setting the HTML input mode
You may use theinputMode() method to set the HTML inputmode attribute, which hints at the type of keyboard to show on mobile. For numeric inputs, use inputMode('decimal') for decimal values or inputMode('numeric') for integers:
Setting the numeric step
When usingtype('number'), you may use the step() method to set the HTML step attribute. Use step('any') for decimal values or step('1') for integers:
Adding affix text aside the field
You may place text before and after the input using theprefix() and suffix() methods:
Using icons as affixes
You may place an icon before and after the input using theprefixIcon() and suffixIcon() methods:
Setting the affix icon’s color
Affix icons are gray by default, but you may set a different color using theprefixIconColor() and suffixIconColor() methods:
Lifecycle hooks
Hooks may be used to execute code at various points within the input’s lifecycle:Security
Authorization
Text input columns do not automatically check model policies. Without an authorization check, users can update the column for records accessible through the table query, even if the record’supdate() policy denies access to its edit page. Use disabled() with your authorization logic, for example disabled(fn ($record) => $record->user_id !== auth()->id()). Filament checks this condition on the server before saving.
Check permission for the specific attribute being changed. If the column updates a related model or pivot, authorize that operation too. Alternatively, use a resource edit page or a policy-backed EditAction to apply the resource’s edit authorization.