【问题标题】:how to call laravel validation rules in a closure function in laravel?如何在 laravel 的闭包函数中调用 laravel 验证规则?
【发布时间】:2019-08-07 11:37:24
【问题描述】:

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

所以我写了一个 colsure 函数。如果 session('captcha_validated_reset_account') 等于用户输入的帐户,它将跳过验证码。

如果没有,程序将调用 laravel 验证规则,如“required|captcha”(验证码来自https://github.com/mewebstudio/captcha)。

问题是我不知道如何在闭包中调用验证规则,我尝试了 return '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 验证规则吗?

【问题讨论】:

标签: php laravel


【解决方案1】:

你应该把闭包放在一个数组中:

'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.');
            }
        }]

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

【讨论】:

  • 感谢您的回复,请注意我希望调用一个名为“captcha”的规则,它将验证用户输入的验证码。我不知道如何在闭包中调用此规则。
  • 哦,对不起,我以为那是您正在验证的文件的名称。在这种情况下,您将需要一个自定义规则,或者从您正在使用的库中扩展验证码规则并覆盖它的 passes 方法以应用您的条件。
  • 或者检查你是否可以做Rule::captcha(function() {});
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 2020-06-09
  • 2016-11-26
  • 2015-02-21
  • 2017-07-09
  • 2019-12-14
  • 2021-11-25
  • 2014-01-08
相关资源
最近更新 更多