📅  最后修改于: 2023-12-03 14:51:35.977000             🧑  作者: Mango
在 Laravel 中,表单验证是一项非常重要的任务。但是,有时您可能需要验证一个字段的值是否取决于另一个字段的值。这可以通过 Laravel 表单验证中提供的许多规则之一来轻松完成。
same
规则该规则可用于验证某个字段的值是否与另一个字段的值相同。例如,如果您要验证两个密码是否相同,则可以使用以下代码:
public function rules()
{
return [
'password' => 'required',
'password_confirmation' => 'required|same:password',
];
}
以上代码将确保 password_confirmation
字段的值必须与 password
字段的值相同。
如果您需要更高级的验证,Laravel 表单验证允许您自定义验证规则。您可以创建一个自定义规则,并根据需要将其分配给任何验证器。
以下是一个示例自定义规则,用于确保通过 value
参数传递的值必须大于另一个字段的值。在下面的示例中,假设 other_field
是另一个字段的名称。
Validator::extend('greater_than_other_field', function ($attribute, $value, $parameters, $validator) {
$otherField = $parameters[0];
$data = $validator->getData();
return $value > $data[$otherField];
});
然后,您可以在验证器中将此自定义规则指定为规则之一:
public function rules()
{
return [
'field1' => 'required',
'field2' => 'required|greater_than_other_field:field1',
];
}
上述代码将确保 field2
的值大于 field1
的值。
默认情况下,当验证规则不通过时,Laravel 表单验证将使用默认错误消息。如果您需要的话,可以为自定义规则指定自定义错误消息:
public function messages()
{
return [
'greater_than_other_field' => 'The :attribute must be greater than the other field.',
];
}
在上述代码中,greater_than_other_field
是自定义规则的名称,而 :attribute
将替换为验证失败的字段名称。
Laravel 表单验证提供了许多内置的规则,涵盖了大多数常见的表单验证需求。但是,有时您可能需要根据另一个字段的值进行高级验证,这可以通过自定义规则轻松完成。