具有多个属性的Laravel请求验证自定义函数



我目前正在处理一个项目,其中投标者需要填写API证书。在保存之前,我希望确保凭据正常。

我想创建一个自定义验证规则,使用用户名和密码调用API,以检查凭据是否为ok。我可以将验证规则添加到api_username,但由于受保护的$validator->数据属性,我无法获取密码。

有人能帮我吗?

public function rules()
{
return [
'title' => 'required|string',
'api_username' => 'required|string|min:32|max:32|api_cred_check',
'api_password' => 'required|string|min:32|max:32',
];
}
public function withValidator($validator)
{
$validator->addExtension('api_cred_check', function ($attribute, $value, $parameters, $validator) {
//Use credentials to make call to API.
});
$validator->addReplacer('api_cred_check', function ($message, $attribute, $rule, $parameters, $validator) {
//Message if Username and Password won't match.
});
}

您也可以使用clouser作为自定义验证,如下

public function rules()
{
return [
'title' => 'required|string',
'api_username' => ['required', 'string', 'min:32', 'max:32', function ($attr, $value, $fail) {
// You can use guzzle Http here to make an API call 
}],
'api_password' => ['required', 'string', 'min:32', 'max:32', function ($attr, $value, $fail) {
// You can check if Username and Password is wrong.
}],
];
}

将最后一个参数$fail用作函数$fail('如果验证失败,则使用所需消息。'(

最新更新