验证
概述
验证规则可以添加到任何字段中。
在 Laravel 中,验证规则通常以数组(如['required', 'max:255']
)方式或者组合字符串(如 required|max:255
)方式定义。如果你只处理后端的简单表单请求,这是可以的。不过 Filament 也可以提供用户前端验证,这样他们可以在发起后端请求前,修正他们的错误。
Filament 包含多个专用验证方法,不过你也可用使用任何 Laravel 验证规则,包括自定义验证规则。
请注意,有些验证规则依赖于字段名,所以通过
->rule()
/->rules()
传递时就会失效。可以的话,请使用专用验证方法。
可用规则
Active URL
字段值必须经过PHP函数 dns_get_record()
验证返回 有效的 A 或 AAAA 记录。(即具有 A 记录的网址)参考 Laravel 文档
Field::make('name')->activeUrl()
After (date)
字段值必须在给定日期之后。参考 Laravel 文档
Field::make('start_date')->after('tomorrow')
另外,你也可以传入其他字段名作比较:
Field::make('start_date')
Field::make('end_date')->after('start_date')
After or equal to (date)
字段值必须晚于或者等于给定日期。参考 Laravel 文档
Field::make('start_date')->afterOrEqual('tomorrow')
另外,你也可以传入其他字段名作比较:
Field::make('start_date')
Field::make('end_date')->afterOrEqual('start_date')
Alpha
字段值必须全部由英文字母组成。参考 Laravel 文档
Field::make('name')->alpha()
Alpha Dash
字段值可以包含英文字母、数字、中横线(-)或下划线(_)。参考 Laravel 文档
Field::make('name')->alphaDash()
Alpha Numeric
字段值必须是英文字母或数字组成。参考 Laravel 文档
Field::make('name')->alphaNum()
ASCII
字段值必须是 7 位 ASCII 字符。参考 Laravel 文档
Field::make('name')->ascii()
Before (date)
字段值必须在给定日期之前。参考 Laravel 文档
Field::make('start_date')->before('first day of next month')
另外,你也可以传入其他字段名作比较 :
Field::make('start_date')->before('end_date')
Field::make('end_date')
Before or equal to (date)
字段值必须早于或者等于给定日期。参考 Laravel 文档
Field::make('start_date')->beforeOrEqual('end of this month')
另外,你可以传入其他字段名用作比较:
Field::make('start_date')->beforeOrEqual('end_date')
Field::make('end_date')
Confirmed
字段值必须与字段 {field}_confirmation
匹配。参考 Laravel 文档
Field::make('password')->confirmed()
Field::make('password_confirmation')
Different
字段值必须与另一个字段的之不同。参考 Laravel 文档
Field::make('backup_email')->different('email')
Doesnt Start With
字段值不能以给定的其中一个值开头。参考 Laravel 文档
Field::make('name')->doesntStartWith(['admin'])
Doesnt End With
字段值不能以给定的其中一个值结尾。 参考 Laravel 文档
Field::make('name')->doesntEndWith(['admin'])
Ends With
字段值必须以给定的其中一个值开头。参考 Laravel 文档
Field::make('name')->endsWith(['bot'])
Enum
给定的字段必须是一个有效的 Enum 值。参考 Laravel 文档
Field::make('status')->enum(MyStatus::class)
Exists
字段值必须在数据库中存在。参考 Laravel 文档
Field::make('invitation')->exists()
默认情况下,如果表单注册了模型,就会搜索表单模型。你也可以指定一个自定义的表格名或者模型:
use App\Models\Invitation;
Field::make('invitation')->exists(table: Invitation::class)
默认情况下,表单字段名会被用作搜索字段。你也可以指定一个自定义搜索字段:
Field::make('invitation')->exists(column: 'id')
你可以传入闭包到 callback
参数中,自定义规则:
use Illuminate\Validation\Rules\Exists;
Field::make('invitation')
->exists(modifyRuleUsing: function (Exists $rule) {
return $rule->where('is_active', 1);
})
Filled
当字段存在时,字段值不能为空。参考 Laravel 文档
Field::make('name')->filled()
Greater than
验证的字段值必须比另一个字段的值大。参考 Laravel 文档
Field::make('newNumber')->gt('oldNumber')
Greater than or equal to
验证的字段值必须大于或等于给定字段的 值。参考 Laravel 文档
Field::make('newNumber')->gte('oldNumber')
Hex color
字段必需是有效的 16 进制颜色。参考 Laravel 文档
Field::make('color')->hexColor()
In
验证字段必须包含在给定的值列表中。参考 Laravel 文档
Field::make('status')->in(['pending', 'completed'])
Ip Address
字段值必须是 IP 地址。参考 Laravel 文档
Field::make('ip_address')->ip()
Field::make('ip_address')->ipv4()
Field::make('ip_address')->ipv6()
JSON
字段值必须是有效的 JSON 字符串。参考 Laravel 文档
Field::make('ip_address')->json()