【问题标题】:How to use a closure as a validator?如何使用闭包作为验证器?
【发布时间】:2015-11-01 13:10:47
【问题描述】:

是否可以在 Laravel 中做类似以下的事情:

public function rules()
{
    return [
        'sid' => function ($input) {
            // some custom validation logic.
        }
    ];
}

public function messages()
{
    return [
        'sid' => "Invalid SID!",
    ];
}

我想做一些简单的一次性验证。创建自定义验证是一种矫枉过正。

【问题讨论】:

  • 我为此使用sometimes 规则。

标签: validation laravel laravel-5


【解决方案1】:

这里至少有两种选择。

  1. 通过AppServiceProvider boot() 方法创建自定义规则:

     Validator::extend('my_rule', function($attribute, $value, $parameters) {
         // some custom validation logic in order to return true or false
         return $value == 'my-valid-value';
     });
    

然后,您应用以下规则:

    return [
        'sid' => ['my_rule'],
    ];
  1. 或扩展ValidatorServiceProvider 类。使用这个线程一步一步解释:Custom validator in Laravel 5

【讨论】:

    【解决方案2】:

    如果你使用 Laravel 5.6 或更高版本,你可以使用closures

    要在闭包范围内使用 $input,您可以使用 use 关键字。

    'sid' => [ function($attribute, $value, $fail) use $input {
       // your logic here
       //if that fails, so
        return $fail($attribute.' is invalid.');
     }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多