如果帐户(可能是电子邮件或手机)已通过验证码验证,我希望跳过验证码验证。
所以我写了一个colsure函数。如果session('captcha_validated_reset_account')等于用户输入的帐户,它将跳过验证码验证。
如果没有,程序将调用 laravel 验证规则,如“required|captcha”(captcha'来自https://github.com/mewebstudio/captcha)。
问题是我不知道如何在闭包中调用验证规则,我尝试返回“required|captcha”,但它没有按预期工作。
'captcha' => function($attribute, $val, $fail) use ($request) {
if (
! empty(session('captcha_validated_reset_account'))
&& session('captcha_validated_reset_account') == $request->input('account')
) {
return;
} else {
Rule::required... //and call a rule named 'captcha' to validate the captcha code from user input
//return 'required|captcha';
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在闭包函数中调用 laravel 验证规则吗?
您应该将闭包放入数组中:
'captcha' => [ function ($attribute, $val, $fail) use ($request) {
if (
empty(session('captcha_validated_reset_account'))
&& session('captcha_validated_reset_account') != $request->input('account')
) {
$fail($attribute . ' is required.');
}
}]
Run Code Online (Sandbox Code Playgroud)
请注意,我已经更改了条件。