Php 如何在laravel中的闭包函数中调用laravel验证规则?

Php 如何在laravel中的闭包函数中调用laravel验证规则?,php,laravel,Php,Laravel,如果帐户(可能是电子邮件或手机)已通过验证码验证,我希望跳过验证码验证 所以我写了一个colsure函数。如果会话(“验证码验证码重置码帐户”)等于用户输入的帐户,它将跳过验证码验证 如果没有,程序将调用类似“必需|验证码”(captcha’来自)的laravel验证规则 问题是我不知道如何在闭包中调用验证规则,我尝试返回“required | captcha”,但它没有按预期工作 'captcha' => function($attribute, $val, $fail)use($req

如果帐户(可能是电子邮件或手机)已通过验证码验证,我希望跳过验证码验证

所以我写了一个colsure函数。如果会话(“验证码验证码重置码帐户”)等于用户输入的帐户,它将跳过验证码验证

如果没有,程序将调用类似“必需|验证码”(captcha’来自)的laravel验证规则

问题是我不知道如何在闭包中调用验证规则,我尝试返回“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.');
            }
        }]

请注意,我已经更改了条件。

看这里:您必须使用laravel 5.6+才能实现。感谢您的回复,请注意,我希望调用名为“captcha”的规则,该规则将验证用户输入的captcha代码。我不知道如何在结束时调用此规则。哦,对不起,我以为这是您正在验证的文件的名称。在这种情况下,您将需要一个自定义规则,或者从正在使用的库中扩展captcha规则,并覆盖它的
passes
方法来应用您的条件。或者检查您是否可以执行
规则::captcha(function(){})