多行文本框
简介
多行文本框可让你与多行字符串交互:
use Filament\Forms\Components\Textarea;
Textarea::make('description')

调整多行文本框尺寸
你可以通过 rows() 和 cols() 方法更改多行文本框的尺寸:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->rows(10)
->cols(20)

TIP
除了允许静态值外,rows() 和 cols() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到这些函数中。
自动调整多行文本框尺寸
你可以使用 autosize() 方法让多行文本框根据内容自动调整尺寸:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->autosize()可选地,你可以传入布尔值来控制多行文本框是否可自动调整尺寸:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->autosize(FeatureFlag::active())TIP
除了允许静态值外,autosize() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。


使字段只读
请勿与 禁用字段 混淆,你可以使用 readOnly() 方法使字段「只读」:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->readOnly()与 disabled() 相比有若干差异:
- 使用 `readOnly()` 时,提交表单时字段仍会发送到服务器。可通过浏览器控制台或 JavaScript 修改。你可以使用 [`saved(false)`](/5.x/forms/overview#preventing-a-field-from-being-saved) 来阻止保存。
- 使用 `readOnly()` 时不会有样式变化(例如降低不透明度)。
- 使用 `readOnly()` 时字段仍可获得焦点。
可选地,你可以传入布尔值来控制字段是否只读:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->readOnly(FeatureFlag::active())TIP
除了允许静态值外,readOnly() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。
禁用 Grammarly 检查
若用户安装了 Grammarly,而你希望阻止其分析多行文本框内容,可以使用 disableGrammarly() 方法:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->disableGrammarly()可选地,你可以传入布尔值来控制是否禁用 Grammarly 检查:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->disableGrammarly(FeatureFlag::active())TIP
除了允许静态值外,disableGrammarly() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到该函数中。
去除空白字符
你可以使用 trim() 方法自动去除多行文本框值首尾的空白字符:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->trim()你可能希望为所有多行文本框全局启用去除空白,类似于 Laravel 的 TrimStrings 中间件。可在服务提供者中使用 configureUsing() 方法实现:
use Filament\Forms\Components\Textarea;
Textarea::configureUsing(function (Textarea $component): void {
$component->trim();
});多行文本框校验
除 校验 页面列出的全部规则外,还有专门适用于多行文本框的额外规则。
长度校验
你可以通过 minLength() 和 maxLength() 方法限制多行文本框的长度。这些方法会同时添加前端与后端校验:
use Filament\Forms\Components\Textarea;
Textarea::make('description')
->minLength(2)
->maxLength(1024)你也可以通过 length() 指定多行文本框的精确长度。该方法会同时添加前端与后端校验:
use Filament\Forms\Components\Textarea;
Textarea::make('question')
->length(100)TIP
除了允许静态值外,minLength()、maxLength() 和 length() 方法也接受函数以动态计算。你可以将各种工具作为参数注入到这些函数中。