如果帐户(可能是电子邮件或移动设备)已通过验证码验证,我希望跳过验证码验证。
所以我写了一个闭包函数。如果会话('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';
}
}
有什么办法可以在闭包函数中调用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.');
}
}]
请注意,我已经改变了条件。